2017-08-15 3 views
2

を見つけ、私は、これら二つのアクションを実行しようとしました。しかしながら、それらは、以下の2つの異なる時間値を生成する。JSTLのタイムゾーン(KST)実装エラーが

2017년8월15일화요일오후(PM)8시03분27초GMT + 09:00

2017년8월15일화요일오전(AM)11시03분27초GMT

何かが間違っていたか、実装が間違っていましたか? 私は誤実装の場合、誰に連絡すればよいですか?

答えて

1

3文字のタイムゾーンIDを使用することはお勧めできません。それらは推奨されなくなりました。そしてそれらのすべてがサポートされているわけではありません。

oracle java docs

を参照してください JDK 1.1.xとの互換性のために

3文字のタイムゾーンIDが

、こうした "PST"、 "CTT" など、いくつかの他の3文字のタイムゾーン のID(、 "AST")もサポートされています。ただし、 の複数のタイムゾーン(たとえば、「CST」は米国の「Central 標準時」および「中国標準時」)に同じ略語がよく使用されるため、 の使用は推奨されていません。また、Javaプラットフォームでは そのうちの1つだけを認識します。

2

GMT+09:00それはUTC offsetだ、タイムゾーンではありません。UTCから(時間、分、秒で)違い。 「UTCよりも9時間早い」という意味で、特定の地域や国には属していません。 (たいていのシステムでは、通常、オフセットは「特別なタイプのタイムゾーン」として扱われます。ちょうどmake things easierになります)。

KSTabbreviation for Korea Standard Timeですが、「真の」タイムゾーンではありません。タイムゾーン名は実際には標準化されていませんが、多くのシステムではIANA timezones names(常にAsia/SeoulまたはEurope/Londonのような形式のRegion/City)が使用されます。 簡略略語(CSTまたはKSTなど)の使用は、通常、システムによって避けられます。これは、ambiguous and not standardです。

タイムゾーンAsia/Seoulは、今日はKSTという省略形を使用していますが、これも以前はAsia/Pyongyangで使用されていました。しかし、彼らは同じゾーンではありません。

タイムゾーンは、そのリージョンが持っていたすべての異なるオフセットのセットで、その履歴の間に存在します。今日はAsia/Seoul+09:00オフセットを使用していますが、これまではAsia/Pyongyangも使用されていたため、履歴データは異なります(それが別ゾーンです)。

北朝鮮は+08:30 offset until 1912を、+09:00に変更しました。しかし、2015年には再び+08:30に変更され、今日まで使用されています。

ソウルdifferent offset historyがあります。それはまた、夏時間(夏の間+09:30に変化する)と、(50年代の)過去に+08:30を使用し、その後、1961年にはいくつかの時間の間、DSTを持っていた、+09:00に変更し、今日DSTなしでちょうど+09:00を使用しています。

これらの変更はすべて政府と法律によって定められており、システムはそれを制御できません。現在のタイムゾーン(地域)でオフセットを使用しているという理由だけで、これを永遠に使用する保証はありません。 KSTは今日は+09:00の「同義語」になることがありますが、それはそれが永遠にそのようになることを意味しません。だから、


あなたがGMT+09:00を使用するとき、あなたは、特定のタイムゾーン(there are lots of timezones that can use this offsetため)に任意の相関せず、単にオフセットを使用しています。

2番目のケースでは、日付がKST(offfset +09:00)からUTC(オフセットゼロまたは "GMT")に変換されているようです。最初のケースはオフセット+09:00で8 PMであり、2番目のケースはUTC(オフセットゼロまたは "GMT")で11 AMであり、正しいことに注意してください。

おそらくJSTLはKST(あいまいさのため)を認識せず、デフォルトとしてUTCを使用します。私はそれをAsia/Seoulと置き換えて何が起こるかを見たいと思う。