電子メールの時間帯表記

電子メールの時間帯文字列

[18] インターネットメールの日時形式には、時間帯を記述する欄があります。

仕様書

時間帯

[28] RFC 822 では時間帯は名前または時差によって表すことになっていました >>13 5.1.

[32] 大文字小文字は区別しません >>13 3.4.7.

[34] 北米の3文字表記と時差の表記は ANSI X3.51-1975 に由来するとされています >>13 5.2.

[128] son-of-RFC 1036時差GMTUT のいずれかを使うことを要求しています >>117 5.1.

[38] RFC 822 の一部を改訂する RFC 1123 (や後のRFC2822の日付形式) は、 名前でなく時差によって表記するべきとしています >>44 5.2.14

[142] VPIMv2 (RFC 3801) も、 RFC 822 に基づきつつ時差によって表記するべきとしています >>48

[62] 電子メール関連仕様である RFC 2183RFC 1894RFC 2852RFC 3464 は、 それぞれの文脈においては時差によって表記しなければならない >>61 2., >>72, >>71, >>70 としています。

[57] RFC 822 の附属書Dは本文中の BNF 生成規則をまとめたものですが、 時間帯の定義の時差の部分と注釈の一部が誤って欠落しています >>44 5.2.14

[115] RFC 1036GMT、北米の時間帯名、時差に対応するべき >>109 としています。

[116] 他の時間帯名には対応しなくていいのか、生成しないだけで対応しなければいけないのかは不明瞭です。

[88] RFC 2822/RFC 5322 では時間帯時差によって表すことになっています >>77 3.3., >>106 3.3.

時差

[30] 時差は、 + または -符号の後、 2桁の数字によると2桁の数字によるの2桁で表すことになっています >>13 5.1.

[43] 時差値域RFC 822 には明記されていませんでした。

[120] son-of-RFC 1036 ではは23以下は59以下とされています >>117 5.1.

[93] RFC 2822 ではは 99 以下は 59 以下とされています >>77 3.3.

[42] なお +-atom に含まれる文字なので、 RFC 822 における単独の字句となる区切り文字ではありません。従って、 これら符号数字の間に linear-white-spacecomment を挿入することはできませんでした。

[90] RFC 2822/RFC 5322 によれば、 UT を表すには +0000 を使うべきです >>77 3.3., >>106 3.3.

-0000

[91] RFC 2822/RFC 5322 によれば、 -0000UT を表しますが、 同時に他の地方時のシステムかもしれないシステムで生成されたことも表します >>77 3.3., >>106 3.3.

[152] この解釈は RFC 3339の日時形式でも採用されています。

UTC の名前

[54] UTGMT は、 UT を表します >>13 5.1., >>94 4.3., >>106 4.3., >>117 5.1.

[97] RFC 2822/RFC 5322 ではこれらの使用は禁止されていますが、理解できなければなりません >>94 4.3., >>106 4.3.

[137] ネットニュースで用いられる RFC 5536 は、 GMT も広く用いられているので適合とするが、生成してはならないとしています >>135

[138] 適合するのに認められないとはどういう意味かわかりませんが...

北米時間帯の名前

[29] 北米の主要な標準時夏時刻を表す EST, EDT, CST, CDT, MST, MDT, PST, PDT が定義されており、それぞれ特定の (固定の) 時差を表すこととされていました >>13 5.1.

[129] son-of-RFC 1036 はこれらを禁止しており、解釈が混乱していると指摘しています >>117 5.1.

[98] RFC 2822/RFC 5322 ではこれらの使用は禁止されていますが、理解できなければなりません >>94 4.3., >>106 4.3.

米軍時間帯の名前

[55] RFC 822米軍時間帯を表す1文字のラテン文字の利用を認めていました (ただし J は未使用とされていました) >>13 5.1.

[39] RFC 733 (RFC 822 の前の世代), RFC 822BNF注釈では符号が逆になっています。このため実装により解釈が正反対になってしまい、 RFC 1123 は「この書き方は情報を伝達しない」 >>44 5.2.14 としています。

[130] son-of-RFC 1036 はこれらを禁止しています >>117 5.1.

[99] RFC 2822/RFC 5322 は、これらの使用を禁止していますが、これら (J 以外) が使用された日時を理解できなければならないとしています。ただし、外部情報が無い限り、 -0000 と解釈するべきだとしています。 >>94 4.3., >>106 4.3.

[100] Z も含まれています。

その他の名前

[56] 時間帯を表す文字列は前の世代のRFC733の日付形式から種類が減っています。 一方実際にはここで示されていないもの (例 JST = +0900) がしばしば 使われました。 (最近は少なくなりました。) 標準の北米のものの他に、 欧州アジア豪州の各地の時間帯が歴史的に用いられていました。 中には同名で意味が衝突しているものもあります。

[101] RFC 2822/RFC 5322 は、他の複数文字の名前について、歴史的に使われてきたことを認めた上で、 外部情報がなければ未知のものは -0000 と解釈するべきとしています >>94 4.3., >>106 4.3.

時間帯の説明の注釈

[121] son-of-RFC 1036 は、時差の直後に空白注釈を置くことを認めていました >>117 5.1.。この注釈には、 U+0020-U+007E を1文字以上含めなければなりません (ただし (, ), \ を除きます) >>117 5.1.

[122] RFC 822 では字句間の commentRFC 2822/RFC 5322 では CFWS としてこの位置に注釈を含めることができますが、 son-of-RFC 1036 はそれに時間帯名という意味を与えています。

[123] これは注釈なので、表示しても構いませんが、解釈上は無視しなければなりません >>117 5.1.

時間帯の選択

[125] RFC 1036 は、 GMT を用いて、表示の際に地方時に変換することを推奨していました >>109

[126] son-of-RFC 1036 は投稿者の時間帯時差として記述し、 説明を注釈に含めるべきとしていました >>117 5.1.

[127] 投稿者の時間帯の方が有用な情報であるから変更した >>117 5.1. と説明されています。

[124] RFC 2822/RFC 5322 では、日時地方時を表すものであるべきとされています >>77 3.3., >>106 3.3.

IMAP

[20] IMAPの日時形式インターネットメールの日時形式と似ていますが、 少し違っています。時間帯の部分は、インターネットメールの日時形式とほぼ同じ形式となっています。

[21] 古い IMAP では北米時間帯略称が使われていました。 IMAP4 など新しいものは時差表記を採用しています。

時間帯の略称の一覧

[1] 電子メイルDate 欄その他で用例が発見されている時間帯 (タイム・ゾーン) をあらわす略語の一覧です。 (プロトコル要素としての略語なので、普通の文章中に出てくるものは含んでいませんが、 (自然な結果として) 日常的に使われる略語も多く含んでいます。)

[16] 電子メール以外については、時間帯を参照。

[13] 一覧は >>12 にあります。

[14] 次に示すのはその一部です。

[17] 電子メールの主要な時間帯文字列
  ACSST => [+1, 10, 30],        ## Australian Central Summer Standard
  ACST  => [+1, 09, 30],        ## Australian Central Standard
  ADT	=> [-1,  3,  0],	## (NA)Atlantic Daylight	733
  ADT   => [-1, 04, 00],        ## Brazil Acre Daylight
  AESST => [+1, 11,  0],        ## Australian East Summer Standard
  AEST  => [+1, 10,  0],        ## Australian East Standard 豪州東部標準時
  AHST	=> [-1, 10,  0],	## Alaska-Hawaii Standard
  AKST  => [-1, 09, 00],        ## Alaska Standard
  AM	=> [-1, 00, 00],	## After Morning	午後
  AST	=> [-1,  4,  0],	## (NA)Atlantic Standard	733
  AST   => [-1, 05, 00],        ## Brazil Acre Standard
  AT	=> [-1,  2,  0],	## Azores
  AWSST	=> [+1, 09, 00],	## Australian West Summer Standard
  AWST	=> [+1, 08, 00],	## Australian West Standard
  BDT	=> [-1, 10,  0],	## ベーリング夏時間	733
  BST	=> [-1, 11,  0],	## ベーリング標準時	733
  BST	=> [+1,  1,  0],	## British Summer ブリテン夏時間
  BST	=> [-1,  3,  0],	## Brazil Standard
  BST	=> [+1, 03, 00],	## Baghdad Standard
  BT	=> [+1, 03, 00],	## Baghdad
  CADT	=> [+1, 10, 30],	## Central Australian Daylight
  CAST	=> [+1, 09, 30],	## Central Australian Standard
  CAT	=> [-1, 10, 00],	## Central Alaska
  CCT	=> [+1, 08, 00],	## China Coastal
  CDT	=> [-1, 05, 00],	## (NA)Central Daylight	733, 822
                                   北米中部夏時間
  CDT   => [+1, 09, 00],        ## People's Republic of China Daylight
  CDT   => [-1, 06, 00],        ## Cuba Daylight
  CDT   => [-1, 03, 00],        ## Chile Continental Daylight
  CET	=> [+1,  1,  0],	## Central European 中欧標準時
  CETDST=> [+1, 02, 00],	## Central European Daylight Saving
  CEST	=> [+1,  2,  0],	## Central European Daylight
  CST	=> [-1,  6,  0],	## (NA)Central Standard	733, 822
  CST	=> [+1, 10, 30],	## Australian Central Standard
  CST   => [+1, 08, 00],        ## People's Republic of China Standard
  CST   => [-1, 05, 00],        ## Cuba Standard
  CST   => [-1, 04, 00],        ## Chile Continental Standard
  DNT                           ## Dansk Normal Tid デンマーク標準時
  DST	=> [-1, 00, 00],	## Daylight Saving	夏時間
  EADT	=> [+1, 11, 00],	## Eastern Australian Daylight
  EAST  => [+1, 10, 00],        ## Eastern Australian Standard
  EASTERN
  ECT	=> [+1,  1,  0],	## Central European
  EDT	=> [-1,  4,  0],	## (NA)Eastern Daylight	733, 822
  EDT   => [-1, 02, 00],        ## Brazil Eastern Daylight
  EDT   => [-1, 05, 00],        ## Chile Easter Island Daylight
  EEST	=> [+1,  3,  0],	## Eastern European Summer
  EET	=> [+1,  2,  0],	## Eastern Europe	東欧標準時 RFC1947
  EET   => [+1, 03, 00],        ## Turkey
  EETDST=> [+1, 03, 00],	## Eastern European Dayright Saving
  EST	=> [-1,  5,  0],	## (NA)Eastern Standard	733, 822
  EST	=> [+1, 10, 00],	## 豪州東部標準時
  EST   => [-1, 03, 00],        ## Brazil Eastern Standard
  EST   => [-1, 06, 00],        ## Chile Easter Island Standard
  EWT	=> [-1,  4,  0],	## U.S. Eastern War Time
  FDT   => [-1, 01, 00],        ## Brazil De Noronha Daylight
  FST	=> [+1,  2,  0],	## French Summer
  FDT   => [-1, 02, 00],        ## Brazil De Noronha Standard
  FWT	=> [+1,  1,  0],	## French Winter
  	## FST と FWT が逆になっている資料がある。
  	## 日本との時差は夏の方が短いのが正しい。
  GDT	=> [+1,  1,  0],	## グリニッジ夏時間	724
  GDT	=> [+1,  2,  0],	## German Daylight
  GM
  GMT	=> [+1,  0,  0],	## Greenwich Mean	733, 822
                                   グリニッジ標準時
  GST	=> [-1,  3,  0],	## Greenland Standard
  GST	=> [+1,  1,  0],	## German Standard
  GST	=> [+1, 10,  0],	## Guam Standard
  HAST  => [-1, 10, 00],        ## Hawaii and Alaska Standard
  HDT	=> [-1,  9,  0],	## Hawaii Daylight Time, Hawaii/Alaska Daylight Time	RFC 733
  HDT   => [-1, 10, 30],        ## Hawaii Daylight
  HKT	=> [+1,  8,  0],	## Hong Kong 香港標準時
  HST	=> [-1, 10,  0],	## Hawaii Standard	733
                                   ハワイ・アラスカ標準時
  IDLE	=> [+1, 12,  0],	## International Date Line, East
  IDLW	=> [-1, 12,  0],	## International Date Line, West
  IDT	=> [+1,  3,  0],        ## イスラエル夏時間 RFC 1555
  IDT   => [+1, 04, 30],        ## Iran Daylight
  IST	=> [+1,  2,  0],	## Israel standard
  IST	=> [+1, 05, 30],	## Indian standard 印度標準時
  IST   => [+1, 03, 30],        ## Iran Standard
  IT	=> [+1, 03, 30],	## Iran
  JCST  => [+1, 09, 00],        ## Japan Central Standard Time 日本中央標準時
  JST	=> [+1, 09, 00],	## Japan Central Standard 日本中央標準時
  JT	=> [+1, 09, 00],	## Japan Central Standard
  JT	=> [+1, 07, 30],	## Java (ジャワ島)
  KDT	=> [+1, 10, 00],	## Korean Daylight
  KST	=> [+1, 09, 00],	## Korean Standard
  LCL	=> [-1, 00, 00],	## (LSMTP が時間帯不明の時使用)
  LIGT  => [+1, 10, 00],        ## 豪州メルボルン時間
  LOCAL	=> [-1, 00, 00],	## local time zone
  LON
  LT	=> [-1,  0,  0],	## Luna Time [RFC 1607]
                                   月時間 RFC1607
  MDT	=> [-1,  6,  0],	## (NA)Mountain Daylight
                                   北米山地夏時間	733, 822
  MET	=> [+1,  0,  0],	## Middle European 中欧標準時
  MET   => [+1, 01, 00],        ## Medium European
  MET DST=> [+1,  2,  0],## 中欧夏時間
  METDST=> [+1,  2,  0],## 中欧夏時間
  MEST	=> [+1,  2,  0],	## Middle European Summer
  MEWT	=> [+1,  0,  0],	## Middle European Winter
  MEZ	=> [+1,  0,  0],	## Central European (German)
  MST	=> [-1,  7,  0],	## (NA)Mountain Standard
                                   北米山地標準時	733, 822
  MOUNTAIN	=> [-1,  7,  0],	## (maybe) (NA)Mountain Standard	733, 822
  MT    => [+1, 08, 30],        ## Moluccas (モルッカ諸島)
  MT	=> [-1,  0,  0],	## Mars Time [RFC 1607]
                                   火星時間 RFC1607
  NDT	=> [-1,  2, 30],	## Newfoundland Daylight
  NFT	=> [-1,  3, 30],	## Newfoundland Standard
  NOR	=> [+1, 01, 00],	## Norway Standard
  NST	=> [-1,  3, 30],	## Newfoundland Standard	733
                                   ニューファンドランド標準時
  NST	=> [-1,  6, 30],	## North Sumatra
  NST   => [-1, 11, 00],        ## Nome Standard
  NT	=> [-1, 11,  0],	## Nome
  NZD	=> [+1, 13,  0],	## New Zealand Daylight
  NZT	=> [+1, 12,  0],	## New Zealand
  NZDT	=> [+1, 13,  0],	## New Zealand Daylight
  NZS	=> [+1, 12,  0],	## (maybe) New Zealand Standard
  NZST	=> [+1, 12,  0],	## New Zealand Standard
  PDT	=> [-1,  7,  0],	## (NA)Pacific Daylight	733, 822
                                   北米太平洋夏時間
  PM	=> [-1, 00, 00],	## (午前のこと?)
  PPET  => [-1, 07, 00],        ## US Pacific New (Presidental Election Year)
  PST	=> [-1,  8,  0],	## (NA)Pacific Standard	733, 822
                                   北米太平洋標準時
  SADT  => [+1, 10, 30],        ## South Australian Daylight
  SAMST
  SAST  => [+1, 09, 30],        ## South Australian Standard
  SAT	=> [+1, 09, 30],	## South Australian
  SET	=> [+1,  1,  0],	## Seychelles (セイシェル諸島)
  SST	=> [+1,  2,  0],	## Swedish Summer
  SST	=> [+1,  7,  0],	## South Sumatra
  SST   => [+1, 08, 00],        ## Singapore Standard
  SST   => [-1, 11, 00],        ## US Samoa Standard
  SWT	=> [+1,  1,  0],	## Swedish Winter
  UCT   => [+1, 00, 00],        ## Coordinated Universal Time
  UKR	=> [+1,  2,  0],	## Ukraine
  UNDEFINED	=> [-1,  0,  0],	## undefined
  UT	=> [+1,  0,  0],	## Universal Time	822
                                   協定世界時
  UTC	=> [+1,  0,  0],	## Coordinated Universal Time
                                   協定世界時
  WADT	=> [+1, 08, 00],	## West Australian Daylight
  WAST	=> [+1, 07, 00],	## West Australian Standard
  WAT	=> [-1,  0,  0],	## West Africa
  WDT   => [+1, 09, 00],        ## West Australian Daylight
  WDT   => [-1, 03, 00],        ## Brazil Western Daylight
  WET	=> [+1,  0,  0],	## Western European
  WETDST=> [+1, 01, 00],	## Western European Daylight
  WST	=> [+1,  8,  0],	## West Australian Standard
  WST   => [-1, 04, 00],        ## Brazil Western Standard
  YDT	=> [-1,  8,  0],	## Yukon Daylight	733
                                   ユーコン夏時間
  YST	=> [-1,  9,  0],	## Yukon Standard	733
                                   ユーコン標準時
  Z	=> [+1,  0,  0],	## 	822, ISO 8601
  ZP4	=> [+1,  4,  0],	## Z+4
  ZP5	=> [+1,  5,  0],	## Z+5
  ZP6	=> [+1,  6,  0],	## Z+6

[2] RFC 822の日付形式にあるものは、RFC 2822の日付形式にもある。

[9] 上表には米軍規格のラテン文字1文字で表す方法は、 Z を除いて載せていない。 RFC 822の日付形式を参照。

[10] 上表では電子メイル関連の RFC などに載っていればその番号を参考として加えた。番号がないものは、 RFC には無いものの実際には使われていたもの (JST など。) と、 C のような電子メイル以外の形式, その他日付系の応用で使われていたものを含む。

[4] 上記で違う時間帯に同じ略称が当てられているものが複数あることからわかるように、 略称は十分標準化されず、曖昧でない表記は不可能です。ですがら、 現在の日付形式規格, 例えば RFC 2822の日付形式RFC 3339の日付形式では名前による指定を廃止し、数値による +0900 のような指定を使っています。

[5] 2002-12-29 16:37: 未だに RFC 822 message で JST とか吐く DQN UA があるみたいですな

[6] 2003-01-16 20:43: RFC 724GDT とは何か、 実は説明がなくて、上の表では適当な数値が入ってますが、違うかもしれませんし、 これでいいのかもしれません。 ietf-822 の最近の mid:3E2418A8.8010701@Sonietta.blilly.com からのスレッドでこれが話題になってますが、 Dave Crocker が知らねぇ〜って言ってます。 (あんた著者じゃないかよ。)

[7] >>6 のメッセージから引用。

As I recall, the formulation of timezones for RFC 733 did not take much note of the previous documents. We simply decided which timezones we wanted to refer to by "name". Offsets (civilian or military) would be used for the rest. So we decided on all North American timezones for names, along with Greewhich Mean Time. (I'd guess that GDT means Greenwhich Daylight Time, but suspect there really is no such thing.)

"North America" included the far east of Canada as well as Alaska and Hawaii. Alaska swings *very* far west. None of us knew the names of their zones. It turns out the next zone east of EST is Atlantic Standard Time. I think I found that in a dictionary, and maybe also the Newfoundland zone.

The western extremes were more challenging. I could not find any reference to their names. I was working at The Rand Corporation at the time. It was famous for "inventing" the technical research library and it had a reference librarian who was legendary for finding difficult answers.

So I gave her a call and asked for her help. She called back in 10 minutes with the answer. I could not believe how quickly she solved this, so I asked how she came up with the answers.

She said she called the telephone information operators in the relevant areas and asked them what they called their timezones...

[19] GDT なんて無いと言ってるけど、英国では夏時刻が実施されてるんだよなあ。

[15] 昔に廃止されたはずの時間帯の名前が載っていたりして謎い。 本当に廃止前の現役当時に使われていたのか、単に昔の記録が後の時代まで残ってしまっていたのか。

[8] 日付/時間のサポート http://osb.sra.co.jp/PostgreSQL/Manual/PostgreSQL-7.1-ja/datetime-appendix.html