[轉]Java中一周前一個月前時間計算方法


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM