Skip to content

Commit 61fc424

Browse files
committed
MFH: Fixed DATE_COOKIE, DATE_RSS & tests
1 parent bb4c7ff commit 61fc424

File tree

2 files changed

+25
-8
lines changed

2 files changed

+25
-8
lines changed

ext/date/php_date.c

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -339,16 +339,33 @@ PHP_MINIT_FUNCTION(date)
339339
#ifdef EXPERIMENTAL_DATE_SUPPORT
340340
date_register_classes(TSRMLS_C);
341341
#endif
342+
/*
343+
* RFC4287, Section 3.3: http://www.ietf.org/rfc/rfc4287.txt
344+
* A Date construct is an element whose content MUST conform to the
345+
* "date-time" production in [RFC3339]. In addition, an uppercase "T"
346+
* character MUST be used to separate date and time, and an uppercase
347+
* "Z" character MUST be present in the absence of a numeric time zone offset.
348+
*/
342349
REGISTER_STRING_CONSTANT("DATE_ATOM", DATE_FORMAT_RFC3339, CONST_CS | CONST_PERSISTENT);
343-
REGISTER_STRING_CONSTANT("DATE_COOKIE", DATE_FORMAT_RFC1123, CONST_CS | CONST_PERSISTENT);
350+
/*
351+
* Preliminary specification: http://wp.netscape.com/newsref/std/cookie_spec.html
352+
* "This is based on RFC 822, RFC 850, RFC 1036, and RFC 1123,
353+
* with the variations that the only legal time zone is GMT
354+
* and the separators between the elements of the date must be dashes."
355+
*/
356+
REGISTER_STRING_CONSTANT("DATE_COOKIE", DATE_FORMAT_RFC850, CONST_CS | CONST_PERSISTENT);
344357
REGISTER_STRING_CONSTANT("DATE_ISO8601", DATE_FORMAT_ISO8601, CONST_CS | CONST_PERSISTENT);
345358
REGISTER_STRING_CONSTANT("DATE_RFC822", DATE_FORMAT_RFC822, CONST_CS | CONST_PERSISTENT);
346359
REGISTER_STRING_CONSTANT("DATE_RFC850", DATE_FORMAT_RFC850, CONST_CS | CONST_PERSISTENT);
347360
REGISTER_STRING_CONSTANT("DATE_RFC1036", DATE_FORMAT_RFC1036, CONST_CS | CONST_PERSISTENT);
348361
REGISTER_STRING_CONSTANT("DATE_RFC1123", DATE_FORMAT_RFC1123, CONST_CS | CONST_PERSISTENT);
349362
REGISTER_STRING_CONSTANT("DATE_RFC2822", DATE_FORMAT_RFC2822, CONST_CS | CONST_PERSISTENT);
350363
REGISTER_STRING_CONSTANT("DATE_RFC3339", DATE_FORMAT_RFC3339, CONST_CS | CONST_PERSISTENT);
351-
REGISTER_STRING_CONSTANT("DATE_RSS", DATE_FORMAT_RFC1123, CONST_CS | CONST_PERSISTENT);
364+
/*
365+
* RSS 2.0 Specification: http://blogs.law.harvard.edu/tech/rss
366+
* "All date-times in RSS conform to the Date and Time Specification of RFC 822"
367+
*/
368+
REGISTER_STRING_CONSTANT("DATE_RSS", DATE_FORMAT_RFC822, CONST_CS | CONST_PERSISTENT);
352369
REGISTER_STRING_CONSTANT("DATE_W3C", DATE_FORMAT_RFC3339, CONST_CS | CONST_PERSISTENT);
353370

354371
REGISTER_LONG_CONSTANT("SUNFUNCS_RET_TIMESTAMP", SUNFUNCS_RET_TIMESTAMP, CONST_CS | CONST_PERSISTENT);
@@ -1285,15 +1302,15 @@ static void date_register_classes(TSRMLS_D)
12851302
zend_declare_class_constant_stringl(date_ce_date, const_name, sizeof(const_name)-1, value, sizeof(value)-1 TSRMLS_CC);
12861303

12871304
REGISTER_DATE_CLASS_CONST_STRING("ATOM", DATE_FORMAT_RFC3339);
1288-
REGISTER_DATE_CLASS_CONST_STRING("COOKIE", DATE_FORMAT_RFC1123);
1305+
REGISTER_DATE_CLASS_CONST_STRING("COOKIE", DATE_FORMAT_RFC850);
12891306
REGISTER_DATE_CLASS_CONST_STRING("ISO8601", DATE_FORMAT_ISO8601);
12901307
REGISTER_DATE_CLASS_CONST_STRING("RFC822", DATE_FORMAT_RFC822);
12911308
REGISTER_DATE_CLASS_CONST_STRING("RFC850", DATE_FORMAT_RFC850);
12921309
REGISTER_DATE_CLASS_CONST_STRING("RFC1036", DATE_FORMAT_RFC1036);
12931310
REGISTER_DATE_CLASS_CONST_STRING("RFC1123", DATE_FORMAT_RFC1123);
12941311
REGISTER_DATE_CLASS_CONST_STRING("RFC2822", DATE_FORMAT_RFC2822);
12951312
REGISTER_DATE_CLASS_CONST_STRING("RFC3339", DATE_FORMAT_RFC3339);
1296-
REGISTER_DATE_CLASS_CONST_STRING("RSS", DATE_FORMAT_RFC1123);
1313+
REGISTER_DATE_CLASS_CONST_STRING("RSS", DATE_FORMAT_RFC822);
12971314
REGISTER_DATE_CLASS_CONST_STRING("W3C", DATE_FORMAT_RFC3339);
12981315

12991316

ext/date/tests/date_constants.phpt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ Date constants
2424
--EXPECT--
2525
string(25) "2006-07-01T14:27:30+02:00"
2626
string(25) "2006-05-30T14:32:13+02:00"
27-
string(31) "Sat, 01 Jul 2006 14:27:30 +0200"
28-
string(31) "Tue, 30 May 2006 14:32:13 +0200"
27+
string(33) "Saturday, 01-Jul-06 14:27:30 CEST"
28+
string(32) "Tuesday, 30-May-06 14:32:13 CEST"
2929
string(24) "2006-07-01T14:27:30+0200"
3030
string(24) "2006-05-30T14:32:13+0200"
3131
string(29) "Sat, 01 Jul 06 14:27:30 +0200"
@@ -38,7 +38,7 @@ string(31) "Sat, 01 Jul 2006 14:27:30 +0200"
3838
string(31) "Tue, 30 May 2006 14:32:13 +0200"
3939
string(31) "Sat, 01 Jul 2006 14:27:30 +0200"
4040
string(31) "Tue, 30 May 2006 14:32:13 +0200"
41-
string(31) "Sat, 01 Jul 2006 14:27:30 +0200"
42-
string(31) "Tue, 30 May 2006 14:32:13 +0200"
41+
string(29) "Sat, 01 Jul 06 14:27:30 +0200"
42+
string(29) "Tue, 30 May 06 14:32:13 +0200"
4343
string(25) "2006-07-01T14:27:30+02:00"
4444
string(25) "2006-05-30T14:32:13+02:00"

0 commit comments

Comments
 (0)