0

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

谢谢马克

    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());
4

1 回答 1

0

从文档中:

month - 用于在日历中设置 MONTH 日历字段的值。月份值从 0 开始。例如,0 表示一月。

所以用

GregorianCalendar g = new GregorianCalendar(year,0,1,0,0,0);
于 2013-10-30T09:16:55.490 回答