1

私はJavaで日付に取り組んでいます。私は2つの日付の違いを見つけています。

public static void main(String[] args) {
    final Date futDate = new GregorianCalendar(2012, 8, 15, 0, 0, 0).getTime();

    final Date currentDate = new GregorianCalendar().getTime();

    long diff = Math.round((futDate.getTime() - currentDate.getTime()) / 1000);

    System.out.println(diff / 86400 + " days");
    System.out.println((diff % 86400) / 3600 + " hrs");
    System.out.println(((diff % 86400) % 3600) / 60 + " mins");
    System.out.println((((diff % 86400) % 3600) % 60) % 60 + " secs");
}

出力:

31 days
8 hrs
37 mins
30 secs

日付の差は1日未満ですが、出力は31日を超えています。

4

5 に答える 5

8

8 は現在の月数ではありません :)

月は0から数えます

Java の日付は面倒なので、 http://joda-time.sourceforge.net/を参照することをお勧めします。

于 2012-08-14T09:57:04.150 に答える
5

さらに良いことに、組み込みの定数を使用します。

Calendar.AUGUST 
于 2012-08-14T09:58:15.953 に答える
3

私はJavaで日付に取り組んでいます。

Joda Timeを使用した方がはるかに良いでしょう

2つの日付の違いを見つけています。

Joda Time はこれをとても簡単にします:

LocalDateTime start = ...;
LocalDateTime end = ...;
Period period = new Period(start, end, PeriodType.dayTime());

System.out.println(period.getDays() + " days");
System.out.println(period.getHours() + " hrs");
System.out.println(period.getMinutes() + " mins");
System.out.println(period.getSeconds() + " secs");
于 2012-08-14T10:01:07.843 に答える
0

APIで説明されているように、月は 0 ベースです

したがって、8 ではなく 7 に設定することをお勧めします。

また、期間の計算には、IMO の非常に洗練された時間 APIであるJoda Timeがあります。

于 2012-08-14T10:02:53.037 に答える