日期差异计算错误

时间:2013-10-29 10:06:12

标签: java android

以下代码似乎无法计算spanNow的正确值。刚刚运行代码spanYear在31535999是正确的但是对于spanNow我有一个值23363788,这看起来是错误的。字符串表示正确包含Tue Oct 29 09:56:28 GMT 2013.然而23363788 / 3600/24获得的日数为270.一年中的270日是9月27日,而不是10月29日。为什么差异以及准确计算两个日期之间的秒数的正确方法是什么?

谢谢Mark

    Calendar c = Calendar.getInstance(); 
    int year=c.get(Calendar.YEAR);

    GregorianCalendar g = new GregorianCalendar(year,1,1,0,0,0);
    Date start = g.getTime();
    g = new GregorianCalendar(year,12,31,23,59,59);
    Date end = g.getTime();

    long spanYear = TimeUnit.MILLISECONDS.toSeconds(end.getTime()-start.getTime());
    Date now = new Date();
    String s = now.toString();
    long spanNow = TimeUnit.MILLISECONDS.toSeconds(now.getTime()-start.getTime());

1 个答案:

答案 0 :(得分:0)

来自文档:

  

month - 用于在日历中设置MONTH日历字段的值。月值基于0。例如,1月份为0。

所以使用

GregorianCalendar g = new GregorianCalendar(year,0,1,0,0,0);