]> granicus.if.org Git - php/commitdiff
MFH: Fixed DATE_COOKIE, DATE_RSS & tests
authorHannes Magnusson <bjori@php.net>
Tue, 30 May 2006 14:46:46 +0000 (14:46 +0000)
committerHannes Magnusson <bjori@php.net>
Tue, 30 May 2006 14:46:46 +0000 (14:46 +0000)
ext/date/php_date.c
ext/date/tests/date_constants.phpt

index fd5fb02d33dc62c6241d8e501547e65d89a4b24f..178a3209c44a48e941d327302af8b13aede778e4 100644 (file)
@@ -339,8 +339,21 @@ PHP_MINIT_FUNCTION(date)
 #ifdef EXPERIMENTAL_DATE_SUPPORT
        date_register_classes(TSRMLS_C);
 #endif
+/*
+ * RFC4287, Section 3.3: http://www.ietf.org/rfc/rfc4287.txt
+ *  A Date construct is an element whose content MUST conform to the
+ *  "date-time" production in [RFC3339].  In addition, an uppercase "T"
+ *  character MUST be used to separate date and time, and an uppercase
+ *  "Z" character MUST be present in the absence of a numeric time zone offset.
+ */
        REGISTER_STRING_CONSTANT("DATE_ATOM",    DATE_FORMAT_RFC3339, CONST_CS | CONST_PERSISTENT);
-       REGISTER_STRING_CONSTANT("DATE_COOKIE",  DATE_FORMAT_RFC1123, CONST_CS | CONST_PERSISTENT);
+/*
+ * Preliminary specification: http://wp.netscape.com/newsref/std/cookie_spec.html
+ *   "This is based on RFC 822, RFC 850,  RFC 1036, and  RFC 1123,
+ *   with the variations that the only legal time zone is GMT
+ *   and the separators between the elements of the date must be dashes."
+ */
+       REGISTER_STRING_CONSTANT("DATE_COOKIE",  DATE_FORMAT_RFC850,  CONST_CS | CONST_PERSISTENT);
        REGISTER_STRING_CONSTANT("DATE_ISO8601", DATE_FORMAT_ISO8601, CONST_CS | CONST_PERSISTENT);
        REGISTER_STRING_CONSTANT("DATE_RFC822",  DATE_FORMAT_RFC822,  CONST_CS | CONST_PERSISTENT);
        REGISTER_STRING_CONSTANT("DATE_RFC850",  DATE_FORMAT_RFC850,  CONST_CS | CONST_PERSISTENT);
@@ -348,7 +361,11 @@ PHP_MINIT_FUNCTION(date)
        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_RSS",     DATE_FORMAT_RFC1123, 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"
+ */
+       REGISTER_STRING_CONSTANT("DATE_RSS",     DATE_FORMAT_RFC822,  CONST_CS | CONST_PERSISTENT);
        REGISTER_STRING_CONSTANT("DATE_W3C",     DATE_FORMAT_RFC3339, CONST_CS | CONST_PERSISTENT);
 
        REGISTER_LONG_CONSTANT("SUNFUNCS_RET_TIMESTAMP", SUNFUNCS_RET_TIMESTAMP, CONST_CS | CONST_PERSISTENT);
@@ -1285,7 +1302,7 @@ static void date_register_classes(TSRMLS_D)
        zend_declare_class_constant_stringl(date_ce_date, const_name, sizeof(const_name)-1, value, sizeof(value)-1 TSRMLS_CC);
 
        REGISTER_DATE_CLASS_CONST_STRING("ATOM",    DATE_FORMAT_RFC3339);
-       REGISTER_DATE_CLASS_CONST_STRING("COOKIE",  DATE_FORMAT_RFC1123);
+       REGISTER_DATE_CLASS_CONST_STRING("COOKIE",  DATE_FORMAT_RFC850);
        REGISTER_DATE_CLASS_CONST_STRING("ISO8601", DATE_FORMAT_ISO8601);
        REGISTER_DATE_CLASS_CONST_STRING("RFC822",  DATE_FORMAT_RFC822);
        REGISTER_DATE_CLASS_CONST_STRING("RFC850",  DATE_FORMAT_RFC850);
@@ -1293,7 +1310,7 @@ static void date_register_classes(TSRMLS_D)
        REGISTER_DATE_CLASS_CONST_STRING("RFC1123", DATE_FORMAT_RFC1123);
        REGISTER_DATE_CLASS_CONST_STRING("RFC2822", DATE_FORMAT_RFC2822);
        REGISTER_DATE_CLASS_CONST_STRING("RFC3339", DATE_FORMAT_RFC3339);
-       REGISTER_DATE_CLASS_CONST_STRING("RSS",     DATE_FORMAT_RFC1123);
+       REGISTER_DATE_CLASS_CONST_STRING("RSS",     DATE_FORMAT_RFC822);
        REGISTER_DATE_CLASS_CONST_STRING("W3C",     DATE_FORMAT_RFC3339);
 
 
index 2d3abe928a818127de322a6e6ddb833830ce4534..552608f62a07b04ef1c4df57a89a27cc3c966c58 100644 (file)
@@ -24,8 +24,8 @@ Date constants
 --EXPECT--
 string(25) "2006-07-01T14:27:30+02:00"
 string(25) "2006-05-30T14:32:13+02:00"
-string(31) "Sat, 01 Jul 2006 14:27:30 +0200"
-string(31) "Tue, 30 May 2006 14:32:13 +0200"
+string(33) "Saturday, 01-Jul-06 14:27:30 CEST"
+string(32) "Tuesday, 30-May-06 14:32:13 CEST"
 string(24) "2006-07-01T14:27:30+0200"
 string(24) "2006-05-30T14:32:13+0200"
 string(29) "Sat, 01 Jul 06 14:27:30 +0200"
@@ -38,7 +38,7 @@ string(31) "Sat, 01 Jul 2006 14:27:30 +0200"
 string(31) "Tue, 30 May 2006 14:32:13 +0200"
 string(31) "Sat, 01 Jul 2006 14:27:30 +0200"
 string(31) "Tue, 30 May 2006 14:32:13 +0200"
-string(31) "Sat, 01 Jul 2006 14:27:30 +0200"
-string(31) "Tue, 30 May 2006 14:32:13 +0200"
+string(29) "Sat, 01 Jul 06 14:27:30 +0200"
+string(29) "Tue, 30 May 06 14:32:13 +0200"
 string(25) "2006-07-01T14:27:30+02:00"
 string(25) "2006-05-30T14:32:13+02:00"