Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions ext/date/php_date.c
Original file line number Diff line number Diff line change
Expand Up @@ -503,8 +503,10 @@ PHP_RSHUTDOWN_FUNCTION(date)
* date-time = full-date "T" full-time
*/
#define DATE_FORMAT_RFC3339 "Y-m-d\\TH:i:sP"
#define DATE_FORMAT_RFC3339_FRACTION "Y-m-d\\TH:i:s.uP"

#define DATE_FORMAT_ISO8601 "Y-m-d\\TH:i:sO"
#define DATE_FORMAT_ISO8601_FRACTION "Y-m-d\\TH:i:s.uO"

/*
* RFC3339, Appendix A: http://www.ietf.org/rfc/rfc3339.txt
Expand Down Expand Up @@ -541,6 +543,7 @@ PHP_MINIT_FUNCTION(date)
* "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_ATOM_FRACTION", DATE_FORMAT_RFC3339_FRACTION, 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,
Expand All @@ -549,6 +552,7 @@ PHP_MINIT_FUNCTION(date)
*/
REGISTER_STRING_CONSTANT("DATE_COOKIE", DATE_FORMAT_COOKIE, CONST_CS | CONST_PERSISTENT);
REGISTER_STRING_CONSTANT("DATE_ISO8601", DATE_FORMAT_ISO8601, CONST_CS | CONST_PERSISTENT);
REGISTER_STRING_CONSTANT("DATE_ISO8601_FRACTION", DATE_FORMAT_ISO8601_FRACTION, 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);
Expand All @@ -558,6 +562,7 @@ PHP_MINIT_FUNCTION(date)
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_RFC3339_EXTENDED", DATE_FORMAT_RFC3339_EXTENDED, CONST_CS | CONST_PERSISTENT);
REGISTER_STRING_CONSTANT("DATE_RFC3339_FRACTION", DATE_FORMAT_RFC3339_FRACTION, CONST_CS | CONST_PERSISTENT);

/*
* RSS 2.0 Specification: http://blogs.law.harvard.edu/tech/rss
Expand Down Expand Up @@ -1749,8 +1754,10 @@ static void date_register_classes(void) /* {{{ */
zend_declare_class_constant_stringl(date_ce_interface, const_name, sizeof(const_name)-1, value, sizeof(value)-1);

REGISTER_DATE_INTERFACE_CONST_STRING("ATOM", DATE_FORMAT_RFC3339);
REGISTER_DATE_INTERFACE_CONST_STRING("ATOM_FRACTION", DATE_FORMAT_RFC3339_FRACTION);
REGISTER_DATE_INTERFACE_CONST_STRING("COOKIE", DATE_FORMAT_COOKIE);
REGISTER_DATE_INTERFACE_CONST_STRING("ISO8601", DATE_FORMAT_ISO8601);
REGISTER_DATE_INTERFACE_CONST_STRING("ISO8601_FRACTION", DATE_FORMAT_ISO8601_FRACTION);
REGISTER_DATE_INTERFACE_CONST_STRING("RFC822", DATE_FORMAT_RFC822);
REGISTER_DATE_INTERFACE_CONST_STRING("RFC850", DATE_FORMAT_RFC850);
REGISTER_DATE_INTERFACE_CONST_STRING("RFC1036", DATE_FORMAT_RFC1036);
Expand All @@ -1759,6 +1766,7 @@ static void date_register_classes(void) /* {{{ */
REGISTER_DATE_INTERFACE_CONST_STRING("RFC2822", DATE_FORMAT_RFC2822);
REGISTER_DATE_INTERFACE_CONST_STRING("RFC3339", DATE_FORMAT_RFC3339);
REGISTER_DATE_INTERFACE_CONST_STRING("RFC3339_EXTENDED", DATE_FORMAT_RFC3339_EXTENDED);
REGISTER_DATE_INTERFACE_CONST_STRING("RFC3339_FRACTION", DATE_FORMAT_RFC3339_FRACTION);
REGISTER_DATE_INTERFACE_CONST_STRING("RSS", DATE_FORMAT_RFC1123);
REGISTER_DATE_INTERFACE_CONST_STRING("W3C", DATE_FORMAT_RFC3339);

Expand Down
28 changes: 17 additions & 11 deletions ext/date/tests/DateTimeInterface_constants.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,20 @@ DateTimeInterface constants
<?php

var_dump(
DATE_ATOM === DateTimeInterface::ATOM,
DATE_COOKIE === DateTimeInterface::COOKIE,
DATE_ISO8601 === DateTimeInterface::ISO8601,
DATE_RFC822 === DateTimeInterface::RFC822,
DATE_RFC850 === DateTimeInterface::RFC850,
DATE_RFC1036 === DateTimeInterface::RFC1036,
DATE_RFC1123 === DateTimeInterface::RFC1123,
DATE_RFC2822 === DateTimeInterface::RFC2822,
DATE_RFC3339 === DateTimeInterface::RFC3339,
DATE_RSS === DateTimeInterface::RSS,
DATE_W3C === DateTimeInterface::W3C
DATE_ATOM === DateTimeInterface::ATOM,
DATE_ATOM_FRACTION === DateTimeInterface::ATOM_FRACTION,
DATE_COOKIE === DateTimeInterface::COOKIE,
DATE_ISO8601 === DateTimeInterface::ISO8601,
DATE_ISO8601_FRACTION === DateTimeInterface::ISO8601_FRACTION,
DATE_RFC822 === DateTimeInterface::RFC822,
DATE_RFC850 === DateTimeInterface::RFC850,
DATE_RFC1036 === DateTimeInterface::RFC1036,
DATE_RFC1123 === DateTimeInterface::RFC1123,
DATE_RFC2822 === DateTimeInterface::RFC2822,
DATE_RFC3339 === DateTimeInterface::RFC3339,
DATE_RFC3339_FRACTION === DateTimeInterface::RFC3339_FRACTION,
DATE_RSS === DateTimeInterface::RSS,
DATE_W3C === DateTimeInterface::W3C
);

?>
Expand All @@ -30,3 +33,6 @@ bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
28 changes: 17 additions & 11 deletions ext/date/tests/DateTime_constants.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,20 @@ DateTime constants
<?php

var_dump(
DATE_ATOM === DateTime::ATOM,
DATE_COOKIE === DateTime::COOKIE,
DATE_ISO8601 === DateTime::ISO8601,
DATE_RFC822 === DateTime::RFC822,
DATE_RFC850 === DateTime::RFC850,
DATE_RFC1036 === DateTime::RFC1036,
DATE_RFC1123 === DateTime::RFC1123,
DATE_RFC2822 === DateTime::RFC2822,
DATE_RFC3339 === DateTime::RFC3339,
DATE_RSS === DateTime::RSS,
DATE_W3C === DateTime::W3C
DATE_ATOM_FRACTION === DateTime::ATOM_FRACTION,
DATE_ATOM === DateTime::ATOM,
DATE_COOKIE === DateTime::COOKIE,
DATE_ISO8601 === DateTime::ISO8601,
DATE_ISO8601_FRACTION === DateTime::ISO8601_FRACTION,
DATE_RFC822 === DateTime::RFC822,
DATE_RFC850 === DateTime::RFC850,
DATE_RFC1036 === DateTime::RFC1036,
DATE_RFC1123 === DateTime::RFC1123,
DATE_RFC2822 === DateTime::RFC2822,
DATE_RFC3339 === DateTime::RFC3339,
DATE_RFC3339_FRACTION === DateTime::RFC3339_FRACTION,
DATE_RSS === DateTime::RSS,
DATE_W3C === DateTime::W3C
);

?>
Expand All @@ -30,3 +33,6 @@ bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
10 changes: 8 additions & 2 deletions ext/date/tests/DateTime_format_basic2.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -12,31 +12,37 @@ Test date_format() function : basic functionality
date_default_timezone_set("Europe/London");

echo "*** Testing date_format() : basic functionality - formatting coinstants ***\n";
$date = new DateTime("2005-07-14 22:30:41");
$date = new DateTime("2005-07-14 22:30:41.123456");

var_dump( $date->format( DateTime::ATOM) ) ;
var_dump( $date->format( DateTime::ATOM_FRACTION) ) ;
var_dump( $date->format( DateTime::COOKIE) ) ;
var_dump( $date->format( DateTime::ISO8601) ) ;
var_dump( $date->format( DateTime::ISO8601_FRACTION) ) ;
var_dump( $date->format( DateTime::RFC822) ) ;
var_dump( $date->format( DateTime::RFC850) ) ;
var_dump( $date->format( DateTime::RFC1036) ) ;
var_dump( $date->format( DateTime::RFC1123) ) ;
var_dump( $date->format( DateTime:: RFC2822) ) ;
var_dump( $date->format( DateTime::RFC2822) ) ;
var_dump( $date->format( DateTime::RFC3339) ) ;
var_dump( $date->format( DateTime::RFC3339_FRACTION) ) ;
var_dump( $date->format( DateTime::RSS) ) ;
var_dump( $date->format( DateTime::W3C) ) ;

?>
--EXPECT--
*** Testing date_format() : basic functionality - formatting coinstants ***
string(25) "2005-07-14T22:30:41+01:00"
string(32) "2005-07-14T22:30:41.123456+01:00"
string(34) "Thursday, 14-Jul-2005 22:30:41 BST"
string(24) "2005-07-14T22:30:41+0100"
string(31) "2005-07-14T22:30:41.123456+0100"
string(29) "Thu, 14 Jul 05 22:30:41 +0100"
string(32) "Thursday, 14-Jul-05 22:30:41 BST"
string(29) "Thu, 14 Jul 05 22:30:41 +0100"
string(31) "Thu, 14 Jul 2005 22:30:41 +0100"
string(31) "Thu, 14 Jul 2005 22:30:41 +0100"
string(25) "2005-07-14T22:30:41+01:00"
string(32) "2005-07-14T22:30:41.123456+01:00"
string(31) "Thu, 14 Jul 2005 22:30:41 +0100"
string(25) "2005-07-14T22:30:41+01:00"