次の形式で定義されているように、TimeZoneのPOSIX形式を作成する必要があります。 "アメリカ/ニューヨーク" のEXについてJava TimeZoneとLinux TimeZone夏時間が一致しない
std offset dst [offset],start[/time],end[/time]
POSIX形式は値M3.2.0/2で表され EST + 5EDT、M3.2.0/2、M11.1.0/2ここで
ありますMm.wd/tの形式。
これは、月の月のm日を指定します。日dは0(日曜日)〜6日の間でなければなりません。週wは1〜5でなければなりません。週1は、日dが発生する最初の週であり、週5は、月の最後の日を指定します。月mは1と12の間、私は次のリンク
http://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html
したがって、上記の例の状態、UTCからのオフセット正常から上記の説明は5時間で借りなければなりません。これは本来の子午線の西側であるため、符号は正である。夏時間は3月の第2日曜日の午前2時に開始し、11月の第1日曜日の午前2時に終了します。
私は、Linuxのタイムゾーンファイルを/ usr/share/zoneinfoの/アメリカ/ニューヨークでこれをチェックすると、私はこれを構築するとき、それはしかし
EST5EDT、M3.2.0、M11.1.0
上記の値と一致しましたタイムゾーン "アメリカ/ニューヨーク" のためのJavaで私は、次の文字列
EST-5EDT + 1、M2.1.1/2、M10.1.1/2
を取得し、私はから情報を抽出することにより、上記の文字列を構築次のコードの出力。
TimeZone timezone = TimeZone.getTimeZone("America/New_York");
System.out.println(timezone.toString());
出力
sun.util.calendar.ZoneInfo[id="America/New_York",offset=-18000000,dstSavings=3600000,useDaylight=true,transitions=235,lastRule=java.util.SimpleTimeZone[id=America/New_York,offset=-18000000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=3,startMonth=2,startDay=8,startDayOfWeek=1,startTime=7200000,startTimeMode=0,endMode=3,endMonth=10,endDay=1,endDayOfWeek=1,endTime=7200000,endTimeMode=0]
注意以下の通りであるLinuxの出力と比較して11であるべき値endMonth = 10。
この形式のPOSIX文書へのリンクを投稿できますか?気になります。 –
はい、私は説明でそれを次のように述べました http://www.gnu.org/software/libc/manual/html_node/TZ-Variable。html –
ありがとうございますが、それは公式のPOSIXのドキュメントではありません。これはgnu.orgのライブラリです。グーグルでは、この想定されているPOSIXの日付/時刻形式の別の定義を文書化した他の情報源につながった。だから私は誰かが権威ある情報源を投稿することを望んでいた。 –