3

城田では、印刷すると

DateTime(GregorianChronology.getInstance())
    .withYear(1970)
    .withMonthOfYear(1)
    .withDayOfMonth(1)
    .withHourOfDay(0)
    .withMinuteOfHour(0)
    .withSecondOfMinute(0)
    .withMillisOfSecond(0).getMillis();

なるほど18000000(これもたまたまMILLIS_PER_DAYFWIWの1/4です)。

私が理解していないのは、ミリ秒がJan-1970-01-01として定義されているエポックからのオフセットを表す場合、ミリ秒は0であるべきではないということです。

4

3 に答える 3

2

エポックはJan-1970-01-01GMTです。あなたが持っているインスタンスは、明らかに異なるものを持っていますDateTimeZone。実際、GMT+5にいるように見えます。(18000000ミリ= 5時間)

于 2013-01-25T07:53:12.290 に答える
1

この問題は、Javaの日付に計算の一部としてタイムゾーンが含まれる方法に関連していると思います。

私にとって、これは私がエポックより+10時間進んでいることを意味します。

0GMTに設定された日付/時刻値を作成してみてください。

于 2013-01-25T07:54:34.120 に答える
1

「エポック」は、特定の普遍的な 瞬間であり、宇宙時間のポイントです(たとえば、アポロ11号が月に着陸した瞬間など)。この参照点は、国によって異なる方法で表すことができます(火星人は、自分のカレンダーで表すこともできます)。たとえば、イギリス(GMT)の人々にとって、それは彼らの時計の針が「00:00:00」とマークされ、彼らの(グレゴリオ暦)カレンダーが「1/1/1970」とマークされた瞬間です。しかし、それは単なる例です。

この線

DateTime(GregorianChronology.getInstance()).withYear(1970).withMonthOfYear(1)
    .withDayOfMonth(1).withHourOfDay(0).withMinuteOfHour(0)
    .withSecondOfMinute(0).withMillisOfSecond(0)

あなたの国の時計とカレンダーが「00:00:001970-01-01」とマークされた瞬間を示します。それは、一般的に、別の瞬間です。

于 2013-01-27T13:52:56.850 に答える