date type

date type

[1] 日時形式、すなわち日付を文字(数字)列で表現する方法については、古来様々な 方法が用いられてきました。しかしそれは多くの場合互換性がありません。 例えば、 01/02/03 は、地域により2001年2月3日, 2003年1月2日, 2003年2月1日のように複数の解釈があり得ます。

人が書いて人が解釈していた頃は、当然混乱はあったにしろ、 文脈によりある程度使い分け・識別していました。 しかし機械が日付を扱うようになると、それに伴い表現方法は (技術的制約などで) 更に増加し、混乱は決定的なものとなりました。

日時の表示

[55] 本項は主として日時を記述する構文 (記号列) に焦点を当てたものです。 日時を表示するという行為やどのような日時要素を表示するかの選択に関しては、 日時表示を参照。

内部表現と外部表現

[45] メールHTTPなどの情報交換プロトコルでは、伝統的にテキスト形式が用いられているため、 日時の表記もテキスト形式でした。メールを手元のディスクに保存する時など長期保存するときも、 このテキスト形式をそのまま用いることがよくあります。

[46] しかし比較その他の処理を行いたい時はテキスト形式のままでは複雑すぎるので、 構文解析したデータを内部的には使うのが普通です。 2003年1月2日をリスト (2003, 1, 2) のようなデータ構造で扱うのでも良いのですが、それでもまだ複雑なので、 「1970年1月1日からの秒数」など基準を決めて数値化するのが普通です。

[63] プログラミング言語ライブラリーデータベースAPI などは日時を扱うデータ型を用意していて、こうした内部表現と外部表現との変換を行ったり、 内部表現同士の演算を行ったりできるのが普通です。

[64] JavaScript には Date オブジェクトがあります。 内部的には1970年1月1日からのミリ秒数で表現されていますが、 テキスト形式で入出力でき、また年月日等各部分の数値を取得したり、 曜日を求めたりもできます。

電子メイルの日付形式

電子メイルの部分に記述する日付の形式です。 現在では頭は基本的に機械が処理する部分との認識・実装が 一般的ですが、かつては人が読み書きするのが当然でしたから、 斜線を使う方式での解釈の多義性が問題視されたのです。

RFC 561の日付形式

  • 24 JUL 1973 1527-PDT
  • 7/27/1973 1527-PDT

RFC 724の日付形式

  • 26 August 1976 1429-EDT
  • Wednesday, 8/31/76 1251-Z

RFC 561 の形式の上位互換のようです。 斜線を使う形式は地域により解釈が異なり得るので非推奨とされてます。

RFC 733の日付形式

  • 26 Aug 76 1429 EDT

RFC 724 の英月名形式とほぼ同じ物です。

RFC 822の日付形式

  • 26 Aug 76 14:29:01 EDT

RFC 733 の形式と似ていますが、時間(hour)と分・秒の 区切りの ":" が必須となりました。

なぜか年号が2桁でなければならないように退化しています。

電子ニュース・メッセージでのRFC 1036の日付形式にそのまま 採用されました。

RFC 1123 の日付形式

  • Fri, 15 Mar 2002 16:53 +0900

RFC 822 の形式の小改訂で、4桁の西暦年号が認められ、 推奨されました。また、時間帯は数値表現が推奨されています。

MIMEHTTPの日付形式でもほぼそのまま採用されています。 (RFC 3339の日付形式登場以前の) Internet 標準の日付形式と考えられていました。

RFC 2822の日付形式 (822形式の subset)

RFC 822の日付形式 (RFC 1123 で改訂) と実質的に同じです。 但し新しいメッセイジに使われる形式として、より厳格な書式が 定義されています。

RFC 1505の日付形式

RFC 822の日付形式の秒の後に、1秒に満たない秒数(ってへんな いいかただけど。) が6桁分まで書ける様に拡張したものです。 RFC 1505 が普及しなかったので、この形式も普及しませんでした。

その他

[85] その他インターネットメール日時形式

電子ニュースの日付形式

USENET では元々 ARPANET電子メイルとは 違った形式を使っていましたが、電子ニュースのメッセージの形式自体 が RFC 822 とほとんど同じ物になったので、日付形式もそうなりました。

RFC 850の日付形式RFC 1036の日付形式 (RFC 822の日付形式と同じ) →usefor-articleのDate:欄

ただし、電子ニュースの記事では RFC 822 とは異なり、途中での FWS や comment の自由な挿入は許されていません。 当初からほぼ RFC 2822 の obs でない構文相当でした。

Webの日時形式

[61] Web は歴史的な理由により様々な日付形式を併用しています。 datetime 属性datetime フォーム制御子では、 ISO 8601の日付形式プロファイルを使っています。 lastModified DOM属性では ECMAScriptの日付形式に近いものを使っています。

詳細はWebの日時形式を参照。

HTTPの日付形式

HTTP/1.0 以降は RFC 822 と同じ様なメッセージ形式を使っていますから、 RFC 822の日付形式 (をやや限定したもの) を標準としていますが、標準化が遅れている間に自分の好きな形式を送る実装が多くなりすぎたために、 RFC 850の日付形式 (旧) や asctime形式も理解出来なければならず、 更にそれ以外の形式も頑張って解釈できるようにすることになっています。

XMLの日付形式

XML は仕様として日付形式を特に規定しているわけではありませんが、 XML 応用の中には XML Schemaの日付形式を用いているものも多々あります。

Atomの日付形式のように、「RFC 3339の日付形式かつ XML Schemaの日付形式」 のようなよくわからない定義を採用しているものもあります。

RSSRFC 822の日付形式プロファイルを定義しています。

ISO 8601の日付形式

ISO 8601の日付形式は、その名の通り ISO 8601 で規定された形式ですが、 ISO 8601 そのものは具体的な形式を定めず、様々な日付要素を定義して、これを組み合わせて柔軟に実際の形式を確定できるようになっています。

RFC 3339の日付形式

RFC 3339 は、 Internet の新しい標準時刻表現形式を規定しています。 これは ISO 8601 のプロファイルであり、 W3C HTML4 などで採用されている日付形式とほぼ同じものです。

XML Schemaの日付形式

XML Schema 第2部では dateTime など複数の日時に関連したデータ型を定義していますが、 その中には RFC 3339 の日付形式に似た (同じではない) 日付形式など、 ISO 8601の日付形式プロファイルにあたるものが含まれています。

asctime形式

[75] ANSI C の asctime() の日付形式です。 Cperl などでは非常に手軽に扱うことが出来るので、よく使われます。このためHTTPの日付形式にも含まれています。

その他の情報交換用日時形式

[77] その他の情報交換日時形式

プログラミング言語の日時データ型

Un*x time

The epoch (1970年1月1日0時0分0秒 (GMT)) からの経過秒数を使うのが Un*x時間形式です。 Un*x で動作するプログラムを中心に内部処理形式・保存形式として非常に良く使われています。

[11] 閏秒が扱えないという問題がありますが、これまであまり意識されてきませんでした。

[71] 元々内部表現として使われる想定で作られたものと思われますが、 情報交換でもよく用いられています。

ECMAScriptDate 物体

ECMAScript は The Epoch からのミリ秒の数を Date 物体で使っています。 DOMDOMTimeStamp データ型もそれに倣っています。 Date 物体には toGMTString など日付文字列に変換するメソッドが定義されています。

Visual BasicDate

Microsoft 社の言語環境である Visual Basic で日付や時刻を扱う型である Date 型の実体は浮動小数点型で、整数部で日付, 小数部で時刻を表します。

その他

[74]

人間が読むことを主な目的とした日付形式

[70]

[27] ロケール月名曜日名も参照。

2ch の日付形式

  • [13] (旧) 2001/02/09(金) 22:49
  • [14] (新) 02/12/18 22:56

[48] 最近100分の1秒単位で入るようになりました。 (名無しさん [sage] 2005-12-31 12:40:02 +00:00)

[49] >>48 (VIPでは。) (名無しさん [sage])

[50] 2006年3月31日の次は3月32日になりました。 (名無しさん 2006-03-31 16:13:50 +00:00)

[51] >>50 その翌日は4月2日でしたが、VIPなど一部の板では3月33日になりましたw (名無しさん 2006-04-01 16:15:27 +00:00)

[52] 佐賀暦2006年,2006/10/21(佐賀) 03:11:20.28 @ VIP (佐賀県記念)

(名無しさん 2006-10-21 01:19:45 +00:00)

[53] VIP では2007/02/13(火)の次は2007/02/15(水)になりました。

(名無しさん 2007-02-14 13:26:34 +00:00)

/. の日付形式

  • [15] Monday December 02, @10:38AM

各部について

年号

[78] 2桁西暦年号の解釈1万年問題も参照。

  • [30] 月: 情報交換用日付形式は一般に認めていませんが、1月、2月、3月を前年の13月、14月。15月にすると年度の関係で扱いがよくなることがあります。予定管理系ソフトウェア(謎)などでは採用の検討に値するでしょう。 (ツェラーの公式なんかもこの方法を使いますね。)
  • [31] 人が読む日付形式では、 (特に欧米で) 月名 (数字ではなく。) を使うのが好まれることがあります。例えば、 ISO 8601の日付形式2003-01-02 よりも RFC 2822の日付形式02 Jan 2003 の方が良いという人もいます。これは、欧米では >>1 に挙がっている解釈の多義性が大きな問題だからです。4桁年号と月の名前と日付の数字なら、解釈は明らかです。
  • [32] しかしながら、人が読む部分ではなく、機械が解釈するプロトコル要素では、形式をしっかり決めてしまえば曖昧性は無いので、どうでもいいといえばどうでもいいです。 (名前と番号の変換表の容易の手間の分だけ微妙に数字方式が楽でしょう。)
  • [33] また、 >>31 で人間に読ませるのが文章の途中ではなくソフトウェアの画面の一部なのであれば、地域化の時に月名を翻訳する (更に言えば、月名で表記する習慣が無い言語・地域もあるので、結局数字表記も選択可能である) 必要があります。 (locale)

[76] 紀年法も参照。

[90] 機械処理用に限らず日付の表記においてはの順序問題による混乱を防ぐため、 月番号ではなく月名の表記が好ましいとされる場合があります。

[91] 例えば RFC 822の日時形式は実際に3文字の英語の省略形の月名を使っています。

[92] も参照。

[8] ほとんどの表記法は、午前午後の区別をせず、24時間制としています。

[9] 午前・午後を区別する場合は、真夜中と昼の0時が午前なのか午後なのか, 更に "0" 時なのか "12" 時なのかに注意する必要があります。

[12] >>9 区別しない場合においても、 "0" 時と "24" 時の扱いが問題になります。 "24:00" の存在を認めている形式もあれば、いない形式もあります。

  • [16] 夏時刻制を導入している地域では、同じ数字の時刻が標準時夏時刻で2回あったり、1度もなかったり、あるいは 24:00〜25:00 が存在したりします。夏時刻への移行の方法や時期は地域により異なりますし、同じ地域でも年により異なることが少なくないので注意が必要です。

[17] 起き続けている間を論理として、翌日の午前 n 時をその日の (n + 24) 時と呼ぶ人もいます。例えば翌日午前2時が26時となります。

30時間制を参照。

[4] は、厳密には閏秒の挿入を考慮する必要があります。 しかし多くの場合には、無視されています。

詳細は閏秒閏秒のない時刻系を参照。

秒未満

[10] 秒未満 (秒の小数部) を扱える規格や実装はほとんどありませんでしたが、 徐々に増えてきています。

時間帯

[96] 時差の記述参照。

曖昧性の記述

[79] 正確な日時が不明である時、人間向けであれば「約」や「頃」や「?」や 「○日から○日」のように日時の記述の前後で補足したり、時間間隔として記述したりします。

[80] 機械向けの場合、まで、までといった精度の低い構文を選択的に用いたり、 始点と終点の組の時間間隔として記述したりします。

[81] 正確な日時が不明であることを記述したり、推定される範囲を記述したりできる日時形式として、 EDTFTEMPER があります。

暦法との関係

[34] 過去の日時将来の日時参照。

時間帯/時差

[73] 時差の記述参照。

日付形式記述形式

[69] 日時パターン参照。

局所的な時間軸における時刻の表記

[56] 相対時刻参照。

時間の表記

[58] ある時刻からある時刻までの範囲や、特定の時刻を想定しない時間の長さを表す書式もいろいろあります。 次の各項を参照。

休日

[62] 休日祝日祝祭日などに関しては、休日の項を参照してください。

宇宙の日時

[40] 宇宙の日時を参照。

日時処理の観点

[93] 文字列としての整列日時としての整列になることを極めて重視して設計された日時形式として、 例えばRFC 2550の日時形式があります。

[94] そうした配慮がなければ、一般には日時整列には特別な処理が必要です。

[95] ISO 8601の日時形式とその派生形式各種は、実用的な範囲内では文字列としての整列日時としての整列となる場合が多いです。 (例えば1万年以上日時などでそれが崩れます。)

[67] 日付の順番がややこしい件 | ニコニコニュース ( 版) http://news.nicovideo.jp/watch/nw201545

アメリカで働いている知人によると、「社内で共有するファイルは、必ずファイル名の先頭に日付をいれているんだけど、『月、日、年』の順番で書くから、フォルダに並んでいるファイルが古い順に並ばなくて不便」

プライバシー

[25] 日時のプライバシーを参照。

メモ

[54] OASIS CAM V1.1 Specification ( ( 版)) http://docs.oasis-open.org/cam/v1.1/os/OASIS-CAM-Specification-1_1-015-060107.html

[65] データ連携と統合を科学するブログ: グレゴリオ暦?ユリウス暦? データベースによって異なる、日付時刻型が扱える範囲 ( 版) http://bitdatasci.blogspot.jp/2014/12/blog-post.html

[57] Providing Structured Data  |  Custom Search  |  Google Developers ( 版) https://developers.google.com/custom-search/docs/structured_data?csw=1#formatting-dates

A site may provide date information implicitly, relying on Google's estimated page date feature to detect dates embedded in the page URL, title or other features, or explicitly, by supplying a date in a structured data format. In either case, effective use of dates requires formatting the dates correctly.

For Custom Search's Sort by Attribute, Bias by Attribute, Restrict to Range features, Google attempts to parse dates using both conventional date formatting and formal standards such as ISO 8601 http://en.wikipedia.org/wiki/ISO_8601 and IETF RFC 850 http://www.faqs.org/rfcs/rfc822.html. The following complete date formats are accepted:

Date Format Example Date

YYYY-MM-DD 2009-12-31

YYYY/MM/DD 2009/12/31

YYYYMMDD 20091231

Month DD YYYY December 31 2009

DD Month YYYY 31 December 2009

Google will attempt to parse variants of these date formats, such as MM/DD/YYYY and DD/MM/YYYY. However, the more ambiguous the date, the less likely that Google will parse it correctly. For example, the date 06/07/08 is extremely ambiguous and it is unlikely Google will assign to it the interpretation you want. For best results, use a complete ISO 8601 date format with a fully specified year.

[68] 15114 – forms: new <input> type for YYYY / YYYY-MM / YYYY-MM-DD / YYYY-MM-DD hh:mm, at user's choice ( 版) https://www.w3.org/Bugs/Public/show_bug.cgi?id=15114

[66] SAS日付関連のフォーマット,インフォーマット - CatTail Wiki* ( 版) http://wikiwiki.jp/cattail/?SAS%C6%FC%C9%D5%B4%D8%CF%A2%A4%CE%A5%D5%A5%A9%A1%BC%A5%DE%A5%C3%A5%C8%A1%A4%A5%A4%A5%F3%A5%D5%A5%A9%A1%BC%A5%DE%A5%C3%A5%C8

[72] 日付型に思う (中博俊著, ) http://blogs.wankuma.com/ognac/archive/2007/06/01/79054.aspx

月末を意味する日に99日というのはよくありますよね。

2007/02/99

ただ月末を31日にするのには困りました。

2007/02/31

[5] Providing Structured Data  |  Custom Search  |  Google Developers ( ()) https://developers.google.com/custom-search/docs/structured_data#formatting_dates

A site may provide date information implicitly, relying on Google's estimated page date feature to detect dates embedded in the page URL, title or other features, or explicitly, by supplying a date in a structured data format. In either case, effective use of dates requires formatting the dates correctly.

For Custom Search's Sort by Attribute, Bias by Attribute, Restrict to Range features, Google attempts to parse dates using both conventional date formatting and formal standards such as ISO 8601 and IETF RFC 850. The following complete date formats are accepted:

Date Format Example Date

YYYY-MM-DD 2009-12-31

YYYY/MM/DD 2009/12/31

YYYYMMDD 20091231

Month DD YYYY December 31 2009

DD Month YYYY 31 December 2009

Google will attempt to parse variants of these date formats, such as MM/DD/YYYY and DD/MM/YYYY. However, the more ambiguous the date, the less likely that Google will parse it correctly. For example, the date 06/07/08 is extremely ambiguous and it is unlikely Google will assign to it the interpretation you want. For best results, use a complete ISO 8601 date format with a fully specified year.

[6] Representations of local time of the day for information interchange ... - Full View | HathiTrust Digital Library | HathiTrust Digital Library () https://babel.hathitrust.org/cgi/pt?id=uiug.30112104151292;view=1up;seq=1;size=150

[7] ARIB TR-B39 () http://www.arib.or.jp/english/html/overview/doc/4-TR-B39v1_0-1p4.pdf#page=28

MH-SDTT の start_time 及び送出系の時間管理はサマータイム制の実施の有無に関わらず、常

に「UTC(世界標準時)+9 時間」を基準とする。

[60] 過去の年月日の表記の統一 - Uyopedia () http://uyopedia.a.freewiki.in/index.php/%E9%81%8E%E5%8E%BB%E3%81%AE%E5%B9%B4%E6%9C%88%E6%97%A5%E3%81%AE%E8%A1%A8%E8%A8%98%E3%81%AE%E7%B5%B1%E4%B8%80

[20] モンゴル語 文法 時間の点と幅の表現:解説 () http://www.coelang.tufs.ac.jp/mt/mn/gmod/contents/explanation/055.html

[21] 日付定数 () http://wiki.genexus.jp/hwiki.aspx?%E6%97%A5%E4%BB%98%E5%AE%9A%E6%95%B0,

[43] 天泣記 (Tanaka Akira著, ) http://www.a-k-r.org/d/2012-10.html

[26] Upwork API Reference () https://developers.upwork.com/?lang=python#contracts-and-offers_create-a-milestone

due_dateoptional, string

Expected date of finalization. Format mm-dd-yyyy.

[88] 15114 – forms: new <input> type for YYYY / YYYY-MM / YYYY-MM-DD / YYYY-MM-DD hh:mm, at user's choice () https://www.w3.org/Bugs/Public/show_bug.cgi?id=15114

[18] ○福知山市公文書例 () http://www.city.fukuchiyama.kyoto.jp/reiki/405902210008000000MH/405902210008000000MH/print.html

(ウ) 日付・時刻及び時間の書き方

日付・時刻及び時間の書き方は、次の例による。

区分

日付

時刻

時間

普通の場合

(元号)2年1月1日

8時30分

8時間

省略する場合

(元号)2.1.1

8:30

(注)1 会議時間などを書く場合は、「自~至」を用いないで、「・・から

・・まで」又は「~」を用いる。

2 記帳などで単に「月日」のみを簡略化して書く場合、例えば4月1

日は「4.1」と書く。

[19] 和暦の元号変更に伴う影響について | CA Communities () https://communities.ca.com/docs/DOC-231176865-%E5%85%83%E5%8F%B7%E5%A4%89%E6%9B%B4%E3%81%AB%E4%BC%B4%E3%81%86%E5%BD%B1%E9%9F%BF%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6

CA Easytrieve Plus 製品自体は、稼動するシステムよりシステム日付を取得、稼動しており、和暦の認識はしておりません。

但し、CA Easytrieve Plus の稼動パラメータの一つであるDATEADJ パラメータへの指定によって、CA Easytrieve Plus の日付フィールドであるSYSDATE フィールド内の年部分(2桁のYY部分)を調整することができますので、結果として、和暦年となるよう調整されている場合に影響が考えられます。

・DATEADJ パラメータに設定された値が、0(デフォルト)である場合、システム日付をそのまま使用する事となり、影響はありません。

・DATEADJ パラメータに設定された値が、和暦換算となるような値(例えば、DATEADJ=88、もしくはDATEADJ=1988等)である場合には、影響がありえます。

 

DATEADJ パラメータに関する詳細は、以下をご覧下さい。

 

DATEADJ パラメータについて

DATEADJ パラメータには、CA Easytrieve Plus の日付フィールドであるSYSDATE フィールドの年部分を調整するために使用する基準年を設定します。

仕組みとしては、CA Easytrieve Plus は、稼動するシステムから、システム日付を読み込み、そのシステム日付の年部分からDATEADJ パラメータに設定した値(基準年)を減算し、減算後の値を CA Easytrieve Plus のSYSDATE フィールドに移送します。

 

例えば、現在のシステム日付が、2017年3月24日(2017/03/24)であった場合、DATEADJ パラメータに、仮に88(もしくは1988等)が指定されていたならば、前述の仕組みにより、SYSDATE フィールドに設定される値は、29/03/24となります。

(2017 – 88 = 1929。 この計算結果の下2桁である29が、SYSDATE フィールドの年部分(YY 部分)に設定されます。)

*DATEADJ パラメータのデフォルト値は0です。

[28] () https://www.digital.archives.go.jp/support/pdf/kaiteiban_kitanomaru33gou_P130.pdf

日の判別しないものはその

月の最後に、月日が判別しないものはその年の最後に配列した。また、収録年代が複数年

月にわたる文書は、そのうちの最後の年月のところに入れるようにした

[35] 判例検索 () http://www.lexisnexis.jp/legal/help/CaseSearch.htm

事件番号の年が元年の場合には、「1」年ではなく「元」年と入力してください。