Do You PHP はてブロ

Do You PHPはてなからはてブロに移動しました

オレオレ定数 - 日付フォーマットの追加

まあ、defineなりでPHPスクリプトで定義すれば済む話なんですが。。。折角なので晒しておきます。以下、「YmdHis」を「DATE_NUM14」とする定義を追加する場合です。

$ pwd
/usr/local/src/php-5.2.5/
$ 
$ diff -c ext/date/php_date.c.org ext/date/php_date.c
*** ext/date/php_date.c.org     2007-07-13 03:59:05.000000000 +0900
--- ext/date/php_date.c 2008-01-04 23:09:51.000000000 +0900
***************
*** 455,460 ****
--- 455,462 ----

  #define DATE_FORMAT_ISO8601  "Y-m-d\\TH:i:sO"

+ #define DATE_FORMAT_NUM14  "YmdHis"
+
  #define DATE_TZ_ERRMSG \
        "It is not safe to rely on the system's timezone settings. Please use " \
        "the date.timezone setting, the TZ environment variable or the " \
***************
*** 494,499 ****
--- 496,502 ----
        REGISTER_STRING_CONSTANT("DATE_RFC1123", DATE_FORMAT_RFC1123, CONST_CS | CONST_PERSISTENT);
        REGISTER_STRING_CONSTANT("DATE_RFC2822", DATE_FORMAT_RFC2822, CONST_CS | CONST_PERSISTENT);
        REGISTER_STRING_CONSTANT("DATE_RFC3339", DATE_FORMAT_RFC3339, CONST_CS | CONST_PERSISTENT);
+       REGISTER_STRING_CONSTANT("DATE_NUM14",   DATE_FORMAT_NUM14,   CONST_CS | CONST_PERSISTENT);
  /*
   * RSS 2.0 Specification: http://blogs.law.harvard.edu/tech/rss
   *   "All date-times in RSS conform to the Date and Time Specification of RFC 822,
***************
*** 1480,1485 ****
--- 1483,1489 ----
        REGISTER_DATE_CLASS_CONST_STRING("RFC3339", DATE_FORMAT_RFC3339);
        REGISTER_DATE_CLASS_CONST_STRING("RSS",     DATE_FORMAT_RFC1123);
        REGISTER_DATE_CLASS_CONST_STRING("W3C",     DATE_FORMAT_RFC3339);
+       REGISTER_DATE_CLASS_CONST_STRING("NUM14",   DATE_FORMAT_NUM14);


        INIT_CLASS_ENTRY(ce_timezone, "DateTimeZone", date_funcs_timezone);
$ 
$ 
$ ./sapi/cli/php -r "var_dump(date(DATE_NUM14));"
string(14) "20080104231147"
$ 

php_date.cを見て、そういえば

<?php
$dt = new DateTime();

ってできたんだっけなぁ、と思い出しましたw