วันอังคารที่ 25 มีนาคม พ.ศ. 2557

วิธีการเปรียบเทียบตัวแปรวันที่ใน JAVA (Date comparison)

โดยปรกติเราสามารถเปรียบเทียบค่ามากกว่าน้อยกว่าของตัวเลข ด้วยเครื่องหมาย

"<" น้อยกว่า
">" มากกว่า
"=" เท่ากับ

แต่ เมื่อต้องการเปรีบบเทียบตัวแปรประเภท วันที่ (Date) ไม่ว่าจะเป็น java.util.Date ro oracle.jbo.domain.Date ตัวแปรทั้งสองจะไม่ยอมให้ใช้เครื่องหมายดังกล่าวในการเปรียบเทียบ

... แล้วจะทำยังไงล่ะ ถ้าเราต้องการรู้ว่า xinputDate มากกว่า หรือน้อยกว่า todayDate




จะขออธิบายแบ่งเป็น 2 กรณี
กรณีที่ 1 java.util.Date
กรณีที่ 2 oracle.jbo.domain.Date

java.util.Date
ตัวแปร Date ของ Java จะมี method ให้เรียกใช้เพื่อเปรียบเทียบอยู่สำคัญๆ ดังนี้
- after
- before
- compareTo
- equals

oracle.jbo.domain.Date
- compareTo
- equals

ในบทความนี้จะขออธิบาย method compareTo เนื่องจากสามารถปรับใช้ได้ และมีประโยชน์อย่างมาก
การเปรีบเทียบตัวแปรวันที่ 2 ตัวแปร ทำได้โดย

public class Main {                                                     
public static void main(String args[])                                  
{                                                                      
Date todayDate=new Date();                                                
Date xinputDate=new Date(todayDate.getYear(),todayDate.getMonth()-1,todayDate.getDay());
if(todayDate.compareTo(xinputDate)<0)                                
     System.out.println("Today Date มีค่าน้อยกว่า xinputDate");
  else if(todayDate.compareTo(xinputDate)>0)                         
     System.out.println("Today Date มีค่ามากกว่า xinputDate");
  else                                                       
     System.out.println("TodayDate และ xinputDate มีค่าเท่ากัน");             
  }                                                          
}

thanks
- http://stackoverflow.com/a/15925758/3386155
- http://docs.oracle.com/cd/E21043_01/apirefs.1111/e10655/oracle/jbo/domain/Date.html
- http://docs.oracle.com/javase/6/docs/api/java/util/Date.html