1. 程式人生 > >JAVA 求昨天、明天的演算法(前兩天,後三天求法)

JAVA 求昨天、明天的演算法(前兩天,後三天求法)

                                     JAVA  求昨天、明天的演算法(前兩天,後三天求法)
JAVA的時間類是支援指向早一天或是晚一天,這樣就給我們程式開發帶來了很大的方便.比如說我們要求昨天或是明天是什麼日子就不在辛苦地去算二用到底是多少天,不在想月未或是月初該怎麼算.一切交給JDK處理.同樣的,我們要求某時間之前或之後一段時間也好算了(這個功能運用得比較廣範,如比我要獲取前5天的資料用於表).
下面,我們來介紹JAVA時間類
java.lang.Object
java.util.Calendar        
java.util.GregorianCalendar
java.lang.Object
      
java.util.Date  

類 Date 表示特定的瞬間,精確到毫秒。
在 JDK 1.1 之前,類 Date 有兩個其他的函式。它允許把日期解釋為年、月、日、小時、分鐘和秒值。它也允許格式化和解析日期字串。不過,這些函式的 API 不易於實現國際化。從 JDK 1.1 開始,應該使用 Calendar 類實現日期和時間欄位之間轉換,使用 DateFormat 類來格式化和解析日期字串。Date 中的相應方法已廢棄。

Calendar 類是一個抽象類,它為特定瞬間與一組諸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日曆欄位之間的轉換提供了一些方法,併為操作日曆欄位(例如獲得下星期的日期)提供了一些方法。瞬間可用毫秒值來表示,它是距曆元(即格林威治標準時間 1970 年 1 月 1 日的 00:00:00.000,格里高利曆)的偏移量。

GregorianCalendar 是 Calendar 的一個具體子類,提供了世界上大多數國家/地區使用的標準日曆系統。
GregorianCalendar 是一種混合日曆,在單一間斷性的支援下同時支援儒略曆和格里高利曆系統,在預設情況下,它對應格里高利日曆創立時的格里高利曆日期(某些國家/地區是在 1582 年 10 月 15 日創立,在其他國家/地區要晚一些)。

Date 類在後來的JDK差不多已被已廢棄了.所以在 Date也能實現指向早一天或是晚一天相對應的方法.

現在我們先看一段實現求前一天的程式碼:
        Calendar   yestoday   =   Calendar.getInstance();  
        
//cal1.set(2000,1,29);
yestoday.add(Calendar.DATE,-1); Calendar   的add(int field, int amount)方法根據日曆規則,將指定的(有符號的)時間量新增到給定的日曆欄位中。其中field可以是Calendar的所有日曆欄位.(注cal1.set(2000,1,29)設定時間時月是從0開始的)
上面一段代的yestoday 就已經指向了昨天的現在這個時候了.

 求時間段一
般是在JAVA+資料庫完成的
好比說前3天的資料吧(包括今天)
        Calendar   cal1   =   Calendar.getInstance();
        cal1.add(Calendar.DATE,
-2);
        
//cal1.set(2000,1,29);
        SimpleDateFormat   sdf   =new SimpleDateFormat("yyyy-MM-dd");  
        String towDaysBefore 
= sdf.format(cal1.getTime());
        
        String today 
= sdf.format(Calendar.getInstance().getTime());
        
        String sql 
="select * from "+tableName+" where time between '"+towDaysBefore
                    
+" and "+today; 上面的sql就是查前3天的資料(包括今天)的sql了
一般來說查一個時間段的資料是以天為基準,沒必要以分秒為基準,所以要SimpleDateFormat   一下.當然到底以什麼為基準還得取決於具體需求了.