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

你可能感兴趣的:(java,C++,c,unix,C#)