zoukankan      html  css  js  c++  java
  • [转]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

  • 相关阅读:
    labview 中的一些简写全称
    socket
    putty
    在波形图表中显示多条曲线
    简单的通电延时触发电路
    Linux sed 批量替换多个文件中的字符串
    PhpMyAdmin管理,登录多台远程MySQL服务器
    MySQL客户端工具推荐
    Redis的几个认识误区
    Redis 的 5 个常见使用场景
  • 原文地址:https://www.cnblogs.com/lpshou/p/3288604.html
Copyright © 2011-2022 走看看