java中利用时间间隔计算日期

Date D = new Date();
System.out.println(D);
D.setDate(D.getDate()-1);
System.out.println(D); 

上面的例子就可以对日期进行计算,但是因为 Date 的 getDay 等方法都已经不推荐使用了,它有很大的局限性:存在1970年问题,无法计算1970年以前的日期,原因是它以English文化为中心,起始日前为Unix的诞生时间,1970年1月1日。推荐使用Calendar类,它可以表示任何历法的日期。所以在日期需要计算的时候通常会选用 java.util.Calendar。
下面是一个取某个日期前一天的例子,用到了 java.text.SimpleDateFormat,仅仅是为了控制输出格式,对日期计算没有实际意义。
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();   // 当时的日期和时间
System.out.println(df.format(c.getTime()));
int d = c.get(Calendar.DAY_OF_MONTH);  // 取出“日”数
--d;                                   // 将“日”减一,即得到前一天
c.set(Calendar.DAY_OF_MONTH, d);       // 将“日”数设置回去
System.out.println(df.format(c.getTime()));
c.set(Calendar.DAY_OF_MONTH, 0);       // 如果当前日期是1日的情况会怎么样?
                                       // 这里演示了这种情况(这里情况下1-1=0所以直接赋0值了)
System.out.println(df.format(c.getTime())); // 这里打印了上个月的最后一天。


以下展示Calendar类更多用法

<%
Calendar now=Calendar.getInstance();
int year=now.get(Calendar.YEAR);
int mon=now.get(Calendar.MONTH);
int day=now.get(Calendar.DAY_OF_MONTH);
int hh=now.get(Calendar.HOUR);
int mm=now.get(Calendar.MINUTE);
int ss=now.get(Calendar.SECOND);
out.print(year+"-"+mon+"-"+day+" "+hh+":"+mm+":"+ss);
%>

上面打印出的日期根式是 2005-01-01 12:24:20
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值