13
DateTime start = new DateTime().withYear(1884);
System.out.println(start);
System.out.println(start.minusYears(1));

出力

1884-01-11T08:26:10.234-08:00
1883-01-11T08:26:10.234-07:52:58

編集1:私は正しくありませんでした。削除されませんでした 1.02 秒

DateTime start = new DateTime().withYear(1884);
DateTime other = start.minusYears(1);
long diffMs = start.getMillis() - other.getMillis(); //31536422000

編集2:

toString();興味深いことに、 - ( -08:00, -07:52:58)の出力に混乱しました

編集3:

Java Calendar では、違いは見られません。

Calendar cal = Calendar.getInstance();
cal.set(start.getYear(), 
        start.getMonthOfYear(), 
        start.getDayOfMonth(), 
        start.getHourOfDay(), 
        start.getMinuteOfHour(), 
        start.getSecondOfDay());
System.out.println(cal.getTime());

cal = Calendar.getInstance();
cal.set(start.getYear()- 1, 
        start.getMonthOfYear(), 
        start.getDayOfMonth(), 
        start.getHourOfDay(), 
        start.getMinuteOfHour(), 
        start.getSecondOfDay());
System.out.println(cal.getTime());

出力:

Mon Feb 11 18:46:42 PST 1884
Sun Feb 11 18:46:42 PST 1883
4

2 に答える 2

13

このタイムゾーン履歴ページから;

1883 年 11 月 18 日に、米国本土の 4 つの標準タイム ゾーンが導入されました。英国は、イングランド、スコットランド、およびウェールズに独自の標準時システムを既に採用しており、1884 年にグローバル タイム ゾーンに関する国際的なコンセンサスを集めるのに役立ちました。

つまり、これら 2 つのタイムスタンプの間で米国のタイム ゾーンが変更されました。

編集: タイム ゾーンを PST (タイム ゾーン) に設定している場合、この効果は表示されませんが、場所 (America/Los_Angeles など) に設定している場合は表示されます。これは、PST のタイム ゾーン オフセットが変更されず、代わりに PST が作成され、ロサンゼルスが LMT から PST に変更されたためです)つまり、ロサンゼルスの時間は変更されましたが、PST は変更されませんでした。

デモとして、これを Linux で試すことができます。

# PST test
$ TZ=PST8PDT date -d '1883-01-01 12:00:00 UTC'
Mon Jan  1 04:00:00 PST 1883

# America/Los_Angeles test
$ TZ=America/Los_Angeles date -d '1883-01-01 12:00:00 UTC'
Mon Jan  1 04:07:02 LMT 1883
于 2013-01-11T16:31:58.667 に答える
1

米国では今年から標準時が採用されました。

1883年: 米国とカナダの鉄道は、大陸全体の地域社会における多様な地方時を置き換えるために、5 つの標準化されたタイム ゾーンを採用しました。誰もがすぐに「鉄道の時間」で運行するようになるでしょう。

ソース

標準時に関するウィキペディアのページ

于 2013-01-11T16:33:26.433 に答える