Java中一周前一個月前時間計算方法
在java語言中,用如下方法獲取系統時間:
Date date = new Date();
String year=new SimpleDateFormat("yyyy").format(date);
String month=new SimpleDateFormat("MM").format(date);
String day=new SimpleDateFormat("dd").format(date);這樣是分別獲取String形式的四位年兩位月兩位日。比如今天就是“2009”和“08”和“05”
當然也可以這樣寫:String dateString=new SimpleDateFormat("yyyy-MM-dd").format(date);這樣寫就會獲得“2009-08-05”的字符串。注意M大 寫,其他小寫。
如果要詳細時間,括號中改成"yyyy-MM-dd hh-mm-ss"。HH大寫為24小時制,小寫為12小時制。
另外值得注意的一點是,在sql server數據庫中,例如某字段time為smalldatetime數據格式,可以將它與字符串比較 比如:....where time>'20090604' 和:....where time>'2009-06-04' 都是正確的。都是表示搜索2009年6月4日0點0時0分以后的信息。但是這個以字符串表示的時間必須是真實存在的,不可以出現'2009-02-29' 的狀況。因為沒有29日,在String向smalldatetime數據類型轉換的時候發生異常。
但是在類似論壇發帖的功能中,常常會從數據庫中獲取一周前,一個月前的數據,我在JAVA中寫了這樣的方法,(貌似)是對的~有用的可以拿去用……
//獲得一周前的日期
1 public String lastWeek(){ 2 Date date = new Date(); 3 int year=Integer.parseInt(new SimpleDateFormat("yyyy").format(date)); 4 int month=Integer.parseInt(new SimpleDateFormat("MM").format(date)); 5 int day=Integer.parseInt(new SimpleDateFormat("dd").format(date))-6; 6 7 if(day<1){ 8 month-=1; 9 if(month==0){ 10 year-=1;month=12; 11 } 12 if(month==4||month==6||month==9||month==11){ 13 day=30+day; 14 }else if(month==1||month==3||month==5||month==7||month==8||month==10||month==12) 15 { 16 day=31+day; 17 }else if(month==2){ 18 if(year%400==0||(year %4==0&&year%100!=0))day=29+day; 19 else day=28+day; 20 } 21 } 22 String y = year+"";String m ="";String d =""; 23 if(month<10) m = "0"+month; 24 else m=month+""; 25 if(day<10) d = "0"+day; 26 else d = day+""; 27 28 return y+m+d; 29 }
//獲得allMonth月前的日期,allMonth可以為任意值
1 public String lastMonth(int allMonth) { 2 Date date = new Date(); 3 int year=Integer.parseInt(new SimpleDateFormat("yyyy").format(date)); 4 int month=Integer.parseInt(new SimpleDateFormat("MM").format(date))-allMonth; 5 int day=Integer.parseInt(new SimpleDateFormat("dd").format(date)); 6 if(month <= 0){ 7 int yearFlag = (month*(-1))/12 + 1; 8 int monthFlag = (month *(-1))%12; 9 year -= yearFlag; 10 month=monthFlag*(-1) +12; 11 } 12 else if(day>28){ 13 if(month==2){ 14 if(year%400==0||(year %4==0&&year%100!=0)){ 15 day=29; 16 }else day=28; 17 }else if((month==4||month==6||month==9||month==11)&&day==31){ 18 day=30; 19 } 20 } 21 String y = year+"";String m ="";String d =""; 22 if(month<10) m = "0"+month; 23 else m=month+""; 24 if(day<10) d = "0"+day; 25 else d = day+""; 26 27 return y+m+d; 28 }
地址:http://www.cn-java.com/www1/bbs/viewthread.php?tid=34559
