PHPを利用していて、

date('Y-m-d H:i:s')
という表記をよく使います。

上記の出力例:
 2008-04-01 16:50:07

質問:このフォーマットに名称は有りますか?

補足:PHPには日付出力フォーマットの定数が用意されています。
たとえば、DATE_RSSやDATE_W3Cです。
http://jp2.php.net/manual/ja/ref.datetime.php

なぜ、Y-m-d H:i:sが定義されていないのか不思議に思いました。

回答の条件
  • 1人2回まで
  • 登録:2008/04/01 16:57:32
  • 終了:2008/04/02 14:44:35

ベストアンサー

id:kent013 No.1

kent013回答回数38ベストアンサー獲得回数72008/04/01 23:39:08

ポイント47pt

matsuboboさんが提示していらっしゃる

PHP/リファレンス/date - ipxw.com

のように定義がいくつもあるのは,プロトコルやアプリケーションの仕様によって様々に定義されてきた歴史があるからです.


それらのプロトコルやアプリケーションは,インターネットの性格上,世界共通で使える日付フォーマットを必要としています.ですから必ず,「タイムゾーン表記」が必要になってきます.

見ていただければわかりますが,名前の付いてるフォーマットはすべてタイムゾーンが定義されています.


date('Y-m-d H:i:s')

で取得できるYYYY-MM-DD hh:mm:ss形式の日付にはタイムゾーンが含まれておらず,データ形式ではなくて「一般的な表示形式」ですから名前付けはされていません.


ISO8601を含むRFC 3339 (rfc3339) - Date and Time on the Internet: Timestampsを参考にすれば

date-fullyear   = 4DIGIT
date-month      = 2DIGIT  ; 01-12
date-mday       = 2DIGIT  ; 01-28, 01-29, 01-30, 01-31 based on
                             ; month/year
full-date       = date-fullyear "-" date-month "-" date-mday

と定義されていますので,YYYY-MM-DDは「RFC3339でいうところのfull-date」です.

また,

time-hour       = 2DIGIT  ; 00-23
time-minute     = 2DIGIT  ; 00-59
time-second     = 2DIGIT  ; 00-58, 00-59, 00-60 based on leap second
                             ; rules
time-secfrac    = "." 1*DIGIT

partial-time    = time-hour ":" time-minute ":" time-second
                  [time-secfrac]

とありますので,hh:mm:ssは「RFC3339でいうところのpartial-time」です.

YYYY-MM-DD hh:mm:ss形式は,RDF3339でいうところの「full-date partial-time」でしょうか.


データ形式ではなくて,日本語における~,英語における~という範疇の形式名はわかりませんが,日付・時刻の表記 | 国立国会図書館-National Diet Libraryにいくらか情報があります.


参考

id:matsubobo

わかりやすい説明ありがとうございます!

・PHPの時間に関する定数にはタイムゾーンが全て付いていることは新たな発見になりました。

・date('Y-m-d H:i:s')の返り値をMySQLへ入れていました。アプリケーションはJSTに設定されたサーバで提供しているためタイムゾーンの影響は受けませんが、タイムゾーンを考慮したフォーマットをアプリケーション内でも利用すべきですね。日本人にとって見やすい DATE_ATOM(DATE_W3C)を利用しようと思います。

2008/04/02 14:42:21

その他の回答(2件)

id:kent013 No.1

kent013回答回数38ベストアンサー獲得回数72008/04/01 23:39:08ここでベストアンサー

ポイント47pt

matsuboboさんが提示していらっしゃる

PHP/リファレンス/date - ipxw.com

のように定義がいくつもあるのは,プロトコルやアプリケーションの仕様によって様々に定義されてきた歴史があるからです.


それらのプロトコルやアプリケーションは,インターネットの性格上,世界共通で使える日付フォーマットを必要としています.ですから必ず,「タイムゾーン表記」が必要になってきます.

見ていただければわかりますが,名前の付いてるフォーマットはすべてタイムゾーンが定義されています.


date('Y-m-d H:i:s')

で取得できるYYYY-MM-DD hh:mm:ss形式の日付にはタイムゾーンが含まれておらず,データ形式ではなくて「一般的な表示形式」ですから名前付けはされていません.


ISO8601を含むRFC 3339 (rfc3339) - Date and Time on the Internet: Timestampsを参考にすれば

date-fullyear   = 4DIGIT
date-month      = 2DIGIT  ; 01-12
date-mday       = 2DIGIT  ; 01-28, 01-29, 01-30, 01-31 based on
                             ; month/year
full-date       = date-fullyear "-" date-month "-" date-mday

と定義されていますので,YYYY-MM-DDは「RFC3339でいうところのfull-date」です.

また,

time-hour       = 2DIGIT  ; 00-23
time-minute     = 2DIGIT  ; 00-59
time-second     = 2DIGIT  ; 00-58, 00-59, 00-60 based on leap second
                             ; rules
time-secfrac    = "." 1*DIGIT

partial-time    = time-hour ":" time-minute ":" time-second
                  [time-secfrac]

とありますので,hh:mm:ssは「RFC3339でいうところのpartial-time」です.

YYYY-MM-DD hh:mm:ss形式は,RDF3339でいうところの「full-date partial-time」でしょうか.


データ形式ではなくて,日本語における~,英語における~という範疇の形式名はわかりませんが,日付・時刻の表記 | 国立国会図書館-National Diet Libraryにいくらか情報があります.


参考

id:matsubobo

わかりやすい説明ありがとうございます!

・PHPの時間に関する定数にはタイムゾーンが全て付いていることは新たな発見になりました。

・date('Y-m-d H:i:s')の返り値をMySQLへ入れていました。アプリケーションはJSTに設定されたサーバで提供しているためタイムゾーンの影響は受けませんが、タイムゾーンを考慮したフォーマットをアプリケーション内でも利用すべきですね。日本人にとって見やすい DATE_ATOM(DATE_W3C)を利用しようと思います。

2008/04/02 14:42:21
id:dungeon-master No.2

dungeon-master回答回数571ベストアンサー獲得回数402008/04/01 23:56:49

ポイント45pt

>質問:このフォーマットに名称は有りますか?

通称、YYYY-MM-DD hh:mm:ss形式(そのまんま…)ですね。

ポピュラーすぎて正式名称がない…

YYYY-MM-DD-hh:mm:ss なら JIS X0301第二形式ともいえますが。

いま、あえて言うなら日時分離型ISO8601表記、かなー。(勝手に考えた)


PHPだと、PearライブラリのDATEパッケージにある getDate(DATE_FORMAT_ISO)が

同様の結果を返します。

http://codezine.jp/a/article/aid/1816.aspx?p=2

DATE_FORMAT_ISOという識別子が示すように、一応「日付」と「時刻」自体はISO形式。

DATE_ISO8601はTを挟んで連結(combined)してタイムゾーン付きですが、

こちらは日付と時刻を分離(separated)表記してタイムゾーンなし。

id:matsubobo

PEARのDateには定義があるんですね。

ありがとうございます。

#補足ですが、1年前にアプリケーションの実行トレースをしたら、PEARのDateがすごく重かったです。。。

2008/04/02 14:22:45
id:itss No.3

itss回答回数171ベストアンサー獲得回数12008/04/02 07:51:32

Hi,

日式日付フォーマット

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません