[转]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

原文地址:https://www.cnblogs.com/lpshou/p/3288604.html