0

次のコードは、spanNow の正しい値を計算していないようです。今日コードを実行したところ、spanYear は 31535999 で正しいですが、spanNow の値は 23363788 で、間違っているように見えます。文字列表現 s には、Tue Oct 29 09:56:28 GMT 2013 が正しく含まれています。ただし、23363788 / 3600 / 24 で年間通算日を取得すると、270 になります。270 の年間通算日は、10 月 29 日ではなく、9 月 27 日です。この不一致の理由と、2 つの日付間の秒数を正確に計算する正しい方法は何ですか?

ありがとうマーク

    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 ベースです。たとえば、1 月は 0 です。

だから使う

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