date関数のフォーマット・オプション「y」とか「h」とか(続き)
昨日の件ですが。
昨日は頭に血が上っていたので、冷静さを欠いておりましたが。。。あの後、更に血圧が上がるようなことを言われて逆に凹んでしまいました。
確かにフォーマット・オプション「g」は忘れてたけどさ。。。そんなに突っ込まなくてもいいじゃない。そもそも下らないミスしてるのは誰よ?_| ̄|○
冷静に考えると、戻り値の結果を強制的に変えてしまうのは良くないので、変わりにワーニングを発生させるように変更してみました。
フォーマット・オプション「y」は強制的にワーニングを発生。
フォーマット・オプション「g」と「h」に関しては「a」か「A」が存在しないときにワーニングを発生(存在するときはワーニングは発生しない)。
--- php-4.4.9,orig/ext/standard/datetime.c 2007-12-31 16:22:52.000000000 +0900 +++ php-4.4.9/ext/standard/datetime.c 2009-06-25 17:34:56.000000000 +0900 @@ -288,6 +288,8 @@ struct tm *ta, tmbuf; int i, size = 0, length, h, beat, fd, wd, yd, wk; char tmp_buff[32]; + int warning_flg = 0, ampm_flg = 0; + #if !HAVE_TM_GMTOFF long tzone; char *tname[2]= {"GMT Standard Time", "BST"}; @@ -386,18 +388,27 @@ size += 3; break; case 'y': /* year, numeric, 2 digits */ + size += 2; + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could you double-check the 'y' format!! You defined the \"%s\". Year returns 2 digits.", Z_STRVAL_PP(format)); + break; + case 'h': /* hour, numeric, 12 hour format */ + case 'g': /* hour, numeric, 12 hour format, no leading zeroes */ + size += 2; + warning_flg = 1; + break; + case 'A': /* AM/PM */ + case 'a': /* am/pm */ + size += 2; + ampm_flg = 1; + break; case 'm': /* month, numeric */ case 'n': /* month, numeric, no leading zeroes */ case 'd': /* day of the month, numeric */ case 'j': /* day of the month, numeric, no leading zeros */ case 'H': /* hour, numeric, 24 hour format */ - case 'h': /* hour, numeric, 12 hour format */ case 'G': /* hour, numeric, 24 hour format, no leading zeroes */ - case 'g': /* hour, numeric, 12 hour format, no leading zeroes */ case 'i': /* minutes, numeric */ case 's': /* seconds, numeric */ - case 'A': /* AM/PM */ - case 'a': /* am/pm */ case 'S': /* standard english suffix for the day of the month (e.g. 3rd, 2nd, etc) */ case 't': /* days in current month */ case 'W': /* ISO-8601 week number of year, weeks starting on Monday */ @@ -418,6 +429,10 @@ } } + if (warning_flg && !ampm_flg) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could you double-check the 'g' or 'h' format!! You defined the \"%s\". Hour returns 12 hour format.", Z_STRVAL_PP(format)); + } + Z_STRVAL_P(return_value) = (char *) emalloc(size + 1); Z_STRVAL_P(return_value)[0] = '\0'; --- php-5.2.10,orig/ext/date/php_date.c 2009-06-06 07:34:30.000000000 +0900 +++ php-5.2.10/ext/date/php_date.c 2009-06-25 17:57:53.000000000 +0900 @@ -743,6 +743,7 @@ timelib_time_offset *offset = NULL; timelib_sll isoweek, isoyear; int rfc_colon; + int warning_flg = 0, ampm_flg = 0; if (!format_len) { return estrdup(""); @@ -797,12 +798,15 @@ /* year */ case 'L': length = slprintf(buffer, 32, "%d", timelib_is_leap((int) t->y)); break; - case 'y': length = slprintf(buffer, 32, "%02d", (int) t->y % 100); break; + case 'y': + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could you double-check the 'y' format!! You defined the \"%s\". Year returns 2 digits.", format); + length = slprintf(buffer, 32, "%02d", (int) t->y % 100); + break; case 'Y': length = slprintf(buffer, 32, "%s%04ld", t->y < 0 ? "-" : "", llabs(t->y)); break; /* time */ - case 'a': length = slprintf(buffer, 32, "%s", t->h >= 12 ? "pm" : "am"); break; - case 'A': length = slprintf(buffer, 32, "%s", t->h >= 12 ? "PM" : "AM"); break; + case 'a': length = slprintf(buffer, 32, "%s", t->h >= 12 ? "pm" : "am"); ampm_flg = 1; break; + case 'A': length = slprintf(buffer, 32, "%s", t->h >= 12 ? "PM" : "AM"); ampm_flg = 1; break; case 'B': { int retval = (((((long)t->sse)-(((long)t->sse) - ((((long)t->sse) % 86400) + 3600))) * 10) / 864); while (retval < 0) { @@ -812,9 +816,9 @@ length = slprintf(buffer, 32, "%03d", retval); break; } - case 'g': length = slprintf(buffer, 32, "%d", (t->h % 12) ? (int) t->h % 12 : 12); break; + case 'g': length = slprintf(buffer, 32, "%d", (t->h % 12) ? (int) t->h % 12 : 12); warning_flg = 1; break; case 'G': length = slprintf(buffer, 32, "%d", (int) t->h); break; - case 'h': length = slprintf(buffer, 32, "%02d", (t->h % 12) ? (int) t->h % 12 : 12); break; + case 'h': length = slprintf(buffer, 32, "%02d", (t->h % 12) ? (int) t->h % 12 : 12); warning_flg = 1; break; case 'H': length = slprintf(buffer, 32, "%02d", (int) t->h); break; case 'i': length = slprintf(buffer, 32, "%02d", (int) t->i); break; case 's': length = slprintf(buffer, 32, "%02d", (int) t->s); break; @@ -880,6 +884,10 @@ smart_str_appendl(&string, buffer, length); } + if (warning_flg && !ampm_flg) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could you double-check the 'g' or 'h' format!! You defined the \"%s\". Hour returns 12 hour format.", format); + } + smart_str_0(&string); if (localtime) { @@ -997,7 +1005,10 @@ /* year */ case 'L': retval = (int) timelib_is_leap((int) t->y); break; - case 'y': retval = (int) (t->y % 100); break; + case 'y': + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could you double-check the 'y' format!! You defined the \"%c\". Year returns 2 digits.", format); + retval = (int) (t->y % 100); + break; case 'Y': retval = (int) t->y; break; /* Swatch Beat a.k.a. Internet Time */ @@ -1010,7 +1021,10 @@ break; /* time */ - case 'g': case 'h': retval = (int) ((t->h % 12) ? (int) t->h % 12 : 12); break; + case 'g': case 'h': + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could you double-check the 'g' or 'h' format!! You defined the \"%c\". Hour returns 12 hour format.", format); + retval = (int) ((t->h % 12) ? (int) t->h % 12 : 12); + break; case 'H': case 'G': retval = (int) t->h; break; case 'i': retval = (int) t->i; break; case 's': retval = (int) t->s; break; --- php-5.3.0RC4,orig/ext/date/php_date.c 2009-06-18 02:56:17.000000000 +0900 +++ php-5.3.0RC4/ext/date/php_date.c 2009-06-25 18:11:47.000000000 +0900 @@ -995,6 +995,7 @@ timelib_time_offset *offset = NULL; timelib_sll isoweek, isoyear; int rfc_colon; + int warning_flg = 0, ampm_flg = 0; if (!format_len) { return estrdup(""); @@ -1049,12 +1050,15 @@ /* year */ case 'L': length = slprintf(buffer, 32, "%d", timelib_is_leap((int) t->y)); break; - case 'y': length = slprintf(buffer, 32, "%02d", (int) t->y % 100); break; + case 'y': + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could you double-check the 'y' format!! You defined the \"%s\". Year returns 2 digits.", format); + length = slprintf(buffer, 32, "%02d", (int) t->y % 100); + break; case 'Y': length = slprintf(buffer, 32, "%s%04ld", t->y < 0 ? "-" : "", llabs((timelib_sll) t->y)); break; /* time */ - case 'a': length = slprintf(buffer, 32, "%s", t->h >= 12 ? "pm" : "am"); break; - case 'A': length = slprintf(buffer, 32, "%s", t->h >= 12 ? "PM" : "AM"); break; + case 'a': length = slprintf(buffer, 32, "%s", t->h >= 12 ? "pm" : "am"); ampm_flg = 1; break; + case 'A': length = slprintf(buffer, 32, "%s", t->h >= 12 ? "PM" : "AM"); ampm_flg = 1; break; case 'B': { int retval = (((((long)t->sse)-(((long)t->sse) - ((((long)t->sse) % 86400) + 3600))) * 10) / 864); while (retval < 0) { @@ -1064,9 +1068,9 @@ length = slprintf(buffer, 32, "%03d", retval); break; } - case 'g': length = slprintf(buffer, 32, "%d", (t->h % 12) ? (int) t->h % 12 : 12); break; + case 'g': length = slprintf(buffer, 32, "%d", (t->h % 12) ? (int) t->h % 12 : 12); warning_flg = 1; break; case 'G': length = slprintf(buffer, 32, "%d", (int) t->h); break; - case 'h': length = slprintf(buffer, 32, "%02d", (t->h % 12) ? (int) t->h % 12 : 12); break; + case 'h': length = slprintf(buffer, 32, "%02d", (t->h % 12) ? (int) t->h % 12 : 12); warning_flg = 1; break; case 'H': length = slprintf(buffer, 32, "%02d", (int) t->h); break; case 'i': length = slprintf(buffer, 32, "%02d", (int) t->i); break; case 's': length = slprintf(buffer, 32, "%02d", (int) t->s); break; @@ -1132,6 +1136,10 @@ smart_str_appendl(&string, buffer, length); } + if (warning_flg && !ampm_flg) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could you double-check the 'g' or 'h' format!! You defined the \"%s\". Hour returns 12 hour format.", format); + } + smart_str_0(&string); if (localtime) { @@ -1249,7 +1257,10 @@ /* year */ case 'L': retval = (int) timelib_is_leap((int) t->y); break; - case 'y': retval = (int) (t->y % 100); break; + case 'y': + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could you double-check the 'y' format!! You defined the \"%c\". Year returns 2 digits.", format); + retval = (int) (t->y % 100); + break; case 'Y': retval = (int) t->y; break; /* Swatch Beat a.k.a. Internet Time */ @@ -1262,7 +1273,10 @@ break; /* time */ - case 'g': case 'h': retval = (int) ((t->h % 12) ? (int) t->h % 12 : 12); break; + case 'g': case 'h': + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could you double-check the 'g' or 'h' format!! You defined the \"%c\". Hour returns 12 hour format.", format); + retval = (int) ((t->h % 12) ? (int) t->h % 12 : 12); + break; case 'H': case 'G': retval = (int) t->h; break; case 'i': retval = (int) t->i; break; case 's': retval = (int) t->s; break;
gist.githubにも登録しておきました。
以下が4.4.9の実行結果。
% /usr/local/src/php-4.4.9,orig/sapi/cli/php -r 'var_dump( date( "y/m/d" ) );' string(8) "09/06/25" % /usr/local/src/php-4.4.9,orig/sapi/cli/php -r 'var_dump( date( "Y/m/d" ) );' string(10) "2009/06/25" % /usr/local/src/php-4.4.9,orig/sapi/cli/php -r 'var_dump( date( "h:i:s" ) );' string(8) "05:38:00" % /usr/local/src/php-4.4.9,orig/sapi/cli/php -r 'var_dump( date( "H:i:s" ) );' string(8) "17:38:00" % /usr/local/src/php-4.4.9,orig/sapi/cli/php -r 'var_dump( date( "g:i:s" ) );' string(7) "5:38:00" % /usr/local/src/php-4.4.9,orig/sapi/cli/php -r 'var_dump( date( "G:i:s" ) );' string(8) "17:38:00" % /usr/local/src/php-4.4.9,orig/sapi/cli/php -r 'var_dump( date( "ah:i:s" ) );' string(10) "pm05:38:00" % /usr/local/src/php-4.4.9,orig/sapi/cli/php -r 'var_dump( date( "ag:i:s" ) );' string(9) "pm5:38:00" % /usr/local/src/php-4.4.9,orig/sapi/cli/php -r 'var_dump( date( "Ah:i:s" ) );' string(10) "PM05:38:00" % /usr/local/src/php-4.4.9,orig/sapi/cli/php -r 'var_dump( date( "Ag:i:s" ) );' string(9) "PM5:38:00" % % % /usr/local/src/php-4.4.9/sapi/cli/php -r 'var_dump( date( "y/m/d" ) );' Warning: date(): Could you double-check the 'y' format!! You defined the "y/m/d". Year returns 2 digits. in Command line code on line 1 string(8) "09/06/25" % /usr/local/src/php-4.4.9/sapi/cli/php -r 'var_dump( date( "Y/m/d" ) );' string(10) "2009/06/25" % /usr/local/src/php-4.4.9/sapi/cli/php -r 'var_dump( date( "h:i:s" ) );' Warning: date(): Could you double-check the 'g' or 'h' format!! You defined the "h:i:s". Hour returns 12 hour format. in Command line code on line 1 string(8) "05:38:16" % /usr/local/src/php-4.4.9/sapi/cli/php -r 'var_dump( date( "H:i:s" ) );' string(8) "17:38:19" % /usr/local/src/php-4.4.9/sapi/cli/php -r 'var_dump( date( "g:i:s" ) );' Warning: date(): Could you double-check the 'g' or 'h' format!! You defined the "g:i:s". Hour returns 12 hour format. in Command line code on line 1 string(7) "5:38:23" % /usr/local/src/php-4.4.9/sapi/cli/php -r 'var_dump( date( "G:i:s" ) );' string(8) "17:38:26" % /usr/local/src/php-4.4.9/sapi/cli/php -r 'var_dump( date( "ah:i:s" ) );' string(10) "pm05:38:31" % /usr/local/src/php-4.4.9/sapi/cli/php -r 'var_dump( date( "ag:i:s" ) );' string(10) "pm5:38:32" % /usr/local/src/php-4.4.9/sapi/cli/php -r 'var_dump( date( "Ah:i:s" ) );' string(10) "PM05:38:36" % /usr/local/src/php-4.4.9/sapi/cli/php -r 'var_dump( date( "Ag:i:s" ) );' string(9) "PM5:38:38" %
以下が5.2.10の実行結果。
% /usr/local/src/php-5.2.10,orig/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( date( "y/m/d" ) );' string(8) "09/06/25" % /usr/local/src/php-5.2.10,orig/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( date( "Y/m/d" ) );' string(10) "2009/06/25" % /usr/local/src/php-5.2.10,orig/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( date( "h:i:s" ) );' string(8) "06:01:44" %/usr/local/src/php-5.2.10,orig/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( date( "H:i:s" ) );' string(8) "18:01:44" % /usr/local/src/php-5.2.10,orig/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( date( "g:i:s" ) );' string(7) "6:01:44" % /usr/local/src/php-5.2.10,orig/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( date( "G:i:s" ) );' string(8) "18:01:44" % /usr/local/src/php-5.2.10,orig/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( date( "ah:i:s" ) );' string(10) "pm06:01:44" % /usr/local/src/php-5.2.10,orig/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( date( "ag:i:s" ) );' string(9) "pm6:01:44" % /usr/local/src/php-5.2.10,orig/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( date( "Ah:i:s" ) );' string(10) "PM06:01:44" % /usr/local/src/php-5.2.10,orig/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( date( "Ag:i:s" ) );' string(9) "PM6:01:44" % /usr/local/src/php-5.2.10,orig/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( idate( "y" ) );' int(9) % /usr/local/src/php-5.2.10,orig/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( idate( "Y" ) );' int(2009) % /usr/local/src/php-5.2.10,orig/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( idate( "g" ) );' int(6) % /usr/local/src/php-5.2.10,orig/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( idate( "h" ) );' int(6) % /usr/local/src/php-5.2.10,orig/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( idate( "G" ) );' int(18) % /usr/local/src/php-5.2.10,orig/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( idate( "H" ) );' int(18) % % % /usr/local/src/php-5.2.10/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( date( "y/m/d" ) );' Warning: date(): Could you double-check the 'y' format!! You defined the "y/m/d". Year returns 2 digits. in Command line code on line 1 string(8) "09/06/25" % /usr/local/src/php-5.2.10/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( date( "Y/m/d" ) );' string(10) "2009/06/25" % /usr/local/src/php-5.2.10/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( date( "h:i:s" ) );' Warning: date(): Could you double-check the 'g' or 'h' format!! You defined the "h:i:s". Hour returns 12 hour format. in Command line code on line 1 string(8) "06:05:44" % /usr/local/src/php-5.2.10/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( date( "H:i:s" ) );' string(8) "18:05:44" % /usr/local/src/php-5.2.10/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( date( "g:i:s" ) );' Warning: date(): Could you double-check the 'g' or 'h' format!! You defined the "g:i:s". Hour returns 12 hour format. in Command line code on line 1 string(7) "6:05:44" % /usr/local/src/php-5.2.10/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( date( "G:i:s" ) );' string(8) "18:05:44" % /usr/local/src/php-5.2.10/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( date( "ah:i:s" ) );' string(10) "pm06:05:44" % /usr/local/src/php-5.2.10/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( date( "ag:i:s" ) );' string(9) "pm6:05:44" % /usr/local/src/php-5.2.10/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( date( "Ah:i:s" ) );' string(10) "PM06:05:44" % /usr/local/src/php-5.2.10/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( date( "Ag:i:s" ) );' string(9) "PM6:05:44" % /usr/local/src/php-5.2.10/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( idate( "y" ) );' Warning: idate(): Could you double-check the 'y' format!! You defined the "y". Year returns 2 digits. in Command line code on line 1 int(9) % /usr/local/src/php-5.2.10/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( idate( "Y" ) );' int(2009) % /usr/local/src/php-5.2.10/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( idate( "g" ) );' Warning: idate(): Could you double-check the 'g' or 'h' format!! You defined the "g". Hour returns 12 hour format. in Command line code on line 1 int(6) % /usr/local/src/php-5.2.10/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( idate( "h" ) );' Warning: idate(): Could you double-check the 'g' or 'h' format!! You defined the "h". Hour returns 12 hour format. in Command line code on line 1 int(6) % /usr/local/src/php-5.2.10/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( idate( "G" ) );' int(18) % /usr/local/src/php-5.2.10/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( idate( "H" ) );' int(18) %
以下が5.3.0RC4の実行結果。
% /usr/local/src/php-5.3.0RC4,orig/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( date( "y/m/d" ) );' string(8) "09/06/25" % /usr/local/src/php-5.3.0RC4,orig/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( date( "Y/m/d" ) );' string(10) "2009/06/25" % /usr/local/src/php-5.3.0RC4,orig/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( date( "h:i:s" ) );' string(8) "06:15:09" % /usr/local/src/php-5.3.0RC4,orig/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( date( "H:i:s" ) );' string(8) "18:15:09" % /usr/local/src/php-5.3.0RC4,orig/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( date( "g:i:s" ) );' string(7) "6:15:09" % /usr/local/src/php-5.3.0RC4,orig/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( date( "G:i:s" ) );' string(8) "18:15:09" % /usr/local/src/php-5.3.0RC4,orig/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( date( "ah:i:s" ) );' string(10) "pm06:15:09" % /usr/local/src/php-5.3.0RC4,orig/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( date( "ag:i:s" ) );' string(9) "pm6:15:09" % /usr/local/src/php-5.3.0RC4,orig/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( date( "Ah:i:s" ) );' string(10) "PM06:15:09" % /usr/local/src/php-5.3.0RC4,orig/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( date( "Ag:i:s" ) );' string(9) "PM6:15:09" % /usr/local/src/php-5.3.0RC4,orig/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( idate( "y" ) );' int(9) % /usr/local/src/php-5.3.0RC4,orig/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( idate( "Y" ) );' int(2009) % /usr/local/src/php-5.3.0RC4,orig/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( idate( "g" ) );' int(6) % /usr/local/src/php-5.3.0RC4,orig/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( idate( "h" ) );' int(6) % /usr/local/src/php-5.3.0RC4,orig/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( idate( "G" ) );' int(18) % /usr/local/src/php-5.3.0RC4,orig/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( idate( "H" ) );' int(18) % % % /usr/local/src/php-5.3.0RC4/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( date( "y/m/d" ) );' Warning: date(): Could you double-check the 'y' format!! You defined the "y/m/d". Year returns 2 digits. in Command line code on line 1 string(8) "09/06/25" % /usr/local/src/php-5.3.0RC4/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( date( "Y/m/d" ) );' string(10) "2009/06/25" % /usr/local/src/php-5.3.0RC4/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( date( "h:i:s" ) );' Warning: date(): Could you double-check the 'g' or 'h' format!! You defined the "h:i:s". Hour returns 12 hour format. in Command line code on line 1 string(8) "06:15:51" % /usr/local/src/php-5.3.0RC4/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( date( "H:i:s" ) );' string(8) "18:15:53" % /usr/local/src/php-5.3.0RC4/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( date( "g:i:s" ) );' Warning: date(): Could you double-check the 'g' or 'h' format!! You defined the "g:i:s". Hour returns 12 hour format. in Command line code on line 1 string(7) "6:15:55" % /usr/local/src/php-5.3.0RC4/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( date( "G:i:s" ) );' string(8) "18:15:57" % /usr/local/src/php-5.3.0RC4/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( date( "ah:i:s" ) );' string(10) "pm06:16:00" % /usr/local/src/php-5.3.0RC4/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( date( "ag:i:s" ) );' string(9) "pm6:16:02" % /usr/local/src/php-5.3.0RC4/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( date( "Ah:i:s" ) );' string(10) "PM06:16:03" % /usr/local/src/php-5.3.0RC4/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( date( "Ag:i:s" ) );' string(9) "PM6:16:05" % /usr/local/src/php-5.3.0RC4/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( idate( "y" ) );' Warning: idate(): Could you double-check the 'y' format!! You defined the "y". Year returns 2 digits. in Command line code on line 1 int(9) % /usr/local/src/php-5.3.0RC4/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( idate( "Y" ) );' int(2009) % /usr/local/src/php-5.3.0RC4/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( idate( "g" ) );' Warning: idate(): Could you double-check the 'g' or 'h' format!! You defined the "g". Hour returns 12 hour format. in Command line code on line 1 int(6) % /usr/local/src/php-5.3.0RC4/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( idate( "h" ) );' Warning: idate(): Could you double-check the 'g' or 'h' format!! You defined the "h". Hour returns 12 hour format. in Command line code on line 1 int(6) % /usr/local/src/php-5.3.0RC4/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( idate( "G" ) );' int(18) % /usr/local/src/php-5.3.0RC4/sapi/cli/php -ddate.timezone='Asia/Tokyo' -r 'var_dump( idate( "H" ) );' int(18) %
軽はずみは発言は控えよう。。。ということで。それにしても見づらいね。_| ̄|○
一点、気がついたのですが、idate関数のマニュアル(formatの説明)と実装とで差があることに気がつきました。
フォーマット・オプション「g」は「h」と同じ挙動をして、「G」は「H」と同じ挙動をするようです。これって既出?