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 一下.當然到底以什麼為基準還得取決於具體需求了.