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