-/* Generated by re2c 0.13.4 on Tue Jul 8 20:14:39 2008 */
+/* Generated by re2c 0.13.5 on Tue Jul 8 22:24:37 2008 */
#line 1 "ext/date/lib/parse_date.re"
/*
+----------------------------------------------------------------------+
char *begin = *ptr, *end;
const timelib_relunit *tp, *value = NULL;
- while (**ptr != '\0' && **ptr != ' ' && **ptr != '\t') {
+ while (**ptr != '\0' && **ptr != ' ' && **ptr != ',' && **ptr != '\t') {
++*ptr;
}
end = *ptr;
while (*fptr && *ptr) {
begin = ptr;
switch (*fptr) {
+ case 'D': /* three letter day */
+ case 'l': /* full day */
+ tmp = timelib_lookup_relunit((char **) &ptr);
+ if (!tmp) {
+ add_pbf_error(s, "A textual day could not be found", string, begin);
+ } else {
+ s->time->m = tmp;
+ }
+ break;
case 'd': /* two digit day, with leading zero */
case 'j': /* two digit day, without leading zero */
TIMELIB_CHECK_NUMBER;
break;
case 'e': /* timezone */
+ case 'P': /* timezone */
+ case 'T': /* timezone */
+ case 'O': /* timezone */
{
int tz_not_found;
s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
++ptr;
break;
+ case '\\': /* escaped char */
+ *fptr++;
+ if (*ptr == *fptr) {
+ ++ptr;
+ } else {
+ add_pbf_error(s, "The escaped character could not be found", string, begin);
+ }
+ break;
+
case '*': /* random chars until a separator or number ([ \t.,:;/-0123456789]) */
timelib_eat_until_separator((char **) &ptr);
break;
char *begin = *ptr, *end;
const timelib_relunit *tp, *value = NULL;
- while (**ptr != '\0' && **ptr != ' ' && **ptr != '\t') {
+ while (**ptr != '\0' && **ptr != ' ' && **ptr != ',' && **ptr != '\t') {
++*ptr;
}
end = *ptr;
while (*fptr && *ptr) {
begin = ptr;
switch (*fptr) {
+ case 'D': /* three letter day */
+ case 'l': /* full day */
+ tmp = timelib_lookup_relunit((char **) &ptr);
+ if (!tmp) {
+ add_pbf_error(s, "A textual day could not be found", string, begin);
+ } else {
+ s->time->m = tmp;
+ }
+ break;
case 'd': /* two digit day, with leading zero */
case 'j': /* two digit day, without leading zero */
TIMELIB_CHECK_NUMBER;
break;
case 'e': /* timezone */
+ case 'P': /* timezone */
+ case 'T': /* timezone */
+ case 'O': /* timezone */
{
int tz_not_found;
s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
++ptr;
break;
+ case '\\': /* escaped char */
+ *fptr++;
+ if (*ptr == *fptr) {
+ ++ptr;
+ } else {
+ add_pbf_error(s, "The escaped character could not be found", string, begin);
+ }
+ break;
+
case '*': /* random chars until a separator or number ([ \t.,:;/-0123456789]) */
timelib_eat_until_separator((char **) &ptr);
break;
--- /dev/null
+--TEST--
+date_create_from_format() and date_parse_from_format().
+--INI--
+date.timezone=Europe/Oslo
+--FILE--
+<?php
+$formats = array( DATE_ATOM, DATE_COOKIE, DATE_ISO8601, DATE_RFC822,
+ DATE_RFC850, DATE_RFC1036, DATE_RFC1123, DATE_RFC2822, DATE_RFC3339,
+ DATE_RSS, DATE_W3C );
+
+foreach( $formats as $format )
+{
+ $date = new DateTime( "2008-07-08T22:14:12+02:00" );
+ $formatted = $date->format( $format ) ;
+ $date2 = date_create_from_format( $format, $formatted );
+ var_dump( $format, $formatted, $date2 );
+ echo "\n";
+ if ( $date2 === false )
+ {
+ var_dump(date_parse_from_format( $format, $formatted ) );
+ }
+}
+?>
+--EXPECT--
+string(13) "Y-m-d\TH:i:sP"
+string(25) "2008-07-08T22:14:12+02:00"
+object(DateTime)#2 (3) {
+ ["date"]=>
+ string(19) "2008-07-08 22:14:12"
+ ["timezone_type"]=>
+ int(1)
+ ["timezone"]=>
+ string(6) "+02:00"
+}
+
+string(16) "l, d-M-y H:i:s T"
+string(36) "Tuesday, 08-Jul-08 22:14:12 GMT+0200"
+object(DateTime)#1 (3) {
+ ["date"]=>
+ string(19) "2008-07-08 22:14:12"
+ ["timezone_type"]=>
+ int(1)
+ ["timezone"]=>
+ string(6) "+02:00"
+}
+
+string(13) "Y-m-d\TH:i:sO"
+string(24) "2008-07-08T22:14:12+0200"
+object(DateTime)#3 (3) {
+ ["date"]=>
+ string(19) "2008-07-08 22:14:12"
+ ["timezone_type"]=>
+ int(1)
+ ["timezone"]=>
+ string(6) "+02:00"
+}
+
+string(16) "D, d M y H:i:s O"
+string(29) "Tue, 08 Jul 08 22:14:12 +0200"
+object(DateTime)#2 (3) {
+ ["date"]=>
+ string(19) "2008-07-08 22:14:12"
+ ["timezone_type"]=>
+ int(1)
+ ["timezone"]=>
+ string(6) "+02:00"
+}
+
+string(16) "l, d-M-y H:i:s T"
+string(36) "Tuesday, 08-Jul-08 22:14:12 GMT+0200"
+object(DateTime)#1 (3) {
+ ["date"]=>
+ string(19) "2008-07-08 22:14:12"
+ ["timezone_type"]=>
+ int(1)
+ ["timezone"]=>
+ string(6) "+02:00"
+}
+
+string(16) "D, d M y H:i:s O"
+string(29) "Tue, 08 Jul 08 22:14:12 +0200"
+object(DateTime)#3 (3) {
+ ["date"]=>
+ string(19) "2008-07-08 22:14:12"
+ ["timezone_type"]=>
+ int(1)
+ ["timezone"]=>
+ string(6) "+02:00"
+}
+
+string(16) "D, d M Y H:i:s O"
+string(31) "Tue, 08 Jul 2008 22:14:12 +0200"
+object(DateTime)#2 (3) {
+ ["date"]=>
+ string(19) "2008-07-08 22:14:12"
+ ["timezone_type"]=>
+ int(1)
+ ["timezone"]=>
+ string(6) "+02:00"
+}
+
+string(16) "D, d M Y H:i:s O"
+string(31) "Tue, 08 Jul 2008 22:14:12 +0200"
+object(DateTime)#1 (3) {
+ ["date"]=>
+ string(19) "2008-07-08 22:14:12"
+ ["timezone_type"]=>
+ int(1)
+ ["timezone"]=>
+ string(6) "+02:00"
+}
+
+string(13) "Y-m-d\TH:i:sP"
+string(25) "2008-07-08T22:14:12+02:00"
+object(DateTime)#3 (3) {
+ ["date"]=>
+ string(19) "2008-07-08 22:14:12"
+ ["timezone_type"]=>
+ int(1)
+ ["timezone"]=>
+ string(6) "+02:00"
+}
+
+string(16) "D, d M Y H:i:s O"
+string(31) "Tue, 08 Jul 2008 22:14:12 +0200"
+object(DateTime)#2 (3) {
+ ["date"]=>
+ string(19) "2008-07-08 22:14:12"
+ ["timezone_type"]=>
+ int(1)
+ ["timezone"]=>
+ string(6) "+02:00"
+}
+
+string(13) "Y-m-d\TH:i:sP"
+string(25) "2008-07-08T22:14:12+02:00"
+object(DateTime)#1 (3) {
+ ["date"]=>
+ string(19) "2008-07-08 22:14:12"
+ ["timezone_type"]=>
+ int(1)
+ ["timezone"]=>
+ string(6) "+02:00"
+}