derick          Tue Dec 16 17:52:49 2003 EDT

  Added files:                 
    /php-src/ext/standard/tests/time    date.phpt 

  Modified files:              
    /php-src/ext/standard       datetime.c 
    /php-src    NEWS 
  Log:
  - Added 'c' modifier to date() which returns the date in ISO 8601 format.
  
  
Index: php-src/ext/standard/datetime.c
diff -u php-src/ext/standard/datetime.c:1.111 php-src/ext/standard/datetime.c:1.112
--- php-src/ext/standard/datetime.c:1.111       Sun Sep 14 20:07:51 2003
+++ php-src/ext/standard/datetime.c     Tue Dec 16 17:52:47 2003
@@ -18,7 +18,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: datetime.c,v 1.111 2003/09/15 00:07:51 iliaa Exp $ */
+/* $Id: datetime.c,v 1.112 2003/12/16 22:52:47 derick Exp $ */
 
 #include "php.h"
 #include "zend_operators.h"
@@ -331,6 +331,9 @@
                        case 'r':               /* rfc822 format */
                                size += 31;
                                break;
+                       case 'c':               /* iso8601 date (Dublin Core Date) */
+                               size += 25;
+                               break;
                        case 'U':               /* seconds since the epoch */
                                size += 10;
                                break;
@@ -557,8 +560,8 @@
                                strcat(Z_STRVAL_P(return_value), tmp_buff);
                                break;
                        case 'r':
-#if HAVE_TM_GMTOFF                             
-                               sprintf(tmp_buff, "%3s, %2d %3s %04d %02d:%02d:%02d 
%c%02d%02d", 
+#if HAVE_TM_GMTOFF
+                               sprintf(tmp_buff, "%3s, %2d %3s %04d %02d:%02d:%02d 
%c%02d%02d",
                                        day_short_names[ta->tm_wday],
                                        ta->tm_mday,
                                        mon_short_names[ta->tm_mon],
@@ -571,7 +574,7 @@
                                        abs( (ta->tm_gmtoff % 3600) / 60 )
                                );
 #else
-                               sprintf(tmp_buff, "%3s, %2d %3s %04d %02d:%02d:%02d 
%c%02d%02d", 
+                               sprintf(tmp_buff, "%3s, %2d %3s %04d %02d:%02d:%02d 
%c%02d%02d",
                                        day_short_names[ta->tm_wday],
                                        ta->tm_mday,
                                        mon_short_names[ta->tm_mon],
@@ -586,6 +589,34 @@
 #endif
                                strcat(Z_STRVAL_P(return_value), tmp_buff);
                                break;
+                       case 'c':
+#if HAVE_TM_GMTOFF
+                               sprintf(tmp_buff, 
"%04d-%02d-%02dT%02d:%02d:%02d%c%02d:%02d",
+                                       ta->tm_year + YEAR_BASE,
+                                       ta->tm_mon + 1,
+                                       ta->tm_mday,
+                                       ta->tm_hour,
+                                       ta->tm_min,
+                                       ta->tm_sec,
+                                       (ta->tm_gmtoff < 0) ? '-' : '+',
+                                       abs(ta->tm_gmtoff / 3600),
+                                       abs( (ta->tm_gmtoff % 3600) / 60 )
+                               );
+#else
+                               sprintf(tmp_buff, 
"%04d-%02d-%02dT%02d:%02d:%02d%c%02d:%02d",
+                                       ta->tm_year + YEAR_BASE,
+                                       ta->tm_mon + 1,
+                                       ta->tm_mday,
+                                       ta->tm_hour,
+                                       ta->tm_min,
+                                       ta->tm_sec,
+                                       ((ta->tm_isdst ? tzone - 3600 : tzone) > 0) ? 
'-' : '+',
+                                       abs((ta->tm_isdst ? tzone - 3600 : tzone) / 
3600),
+                                       abs( ((ta->tm_isdst ? tzone - 3600 : tzone) % 
3600) / 60 )
+                               );
+#endif
+                               strcat(Z_STRVAL_P(return_value), tmp_buff);
+                               break;
                        case 'W':               /* ISO-8601 week number of year, weeks 
starting on Monday */
                                wd = ta->tm_wday == 0 ? 6 : ta->tm_wday - 1; /* 
weekday */
                                yd = ta->tm_yday + 1;                                  
 /* days since January 1st */
Index: php-src/NEWS
diff -u php-src/NEWS:1.1539 php-src/NEWS:1.1540
--- php-src/NEWS:1.1539 Tue Dec 16 17:20:27 2003
+++ php-src/NEWS        Tue Dec 16 17:52:48 2003
@@ -8,6 +8,8 @@
   . ext/db (Jani, Derick)
   . ext/mcal (Jani, Derick)
   . ext/qtdom (Jani, Derick)
+- Added 'c' modifier to date() which returns the date in the ISO 8601 format.
+  (Derick, Manuzhai)
 - Added MacRoman encoding support to htmlentities(). (Derick, Marcus Bointon)
 - Added possibility to call PHP functions as XSLT-functions. (Christian)
 - Added possibility to prevent PHP from registering variables when input filter

Index: php-src/ext/standard/tests/time/date.phpt
+++ php-src/ext/standard/tests/time/date.phpt
--TEST--
date() function
--FILE--
<?php
$tmp = "cr";
putenv ("TZ=GMT0");

for($a = 0;$a < strlen($tmp); $a++){
        echo $tmp{$a}, ': ', date($tmp{$a}, 1043324459)."\n";
}

putenv ("TZ=MET");

for($a = 0;$a < strlen($tmp); $a++){
        echo $tmp{$a}, ': ', date($tmp{$a}, 1043324459)."\n";
}
?>
--EXPECT--
c: 2003-01-23T12:20:59+00:00
r: Thu, 23 Jan 2003 12:20:59 +0000
c: 2003-01-23T13:20:59+01:00
r: Thu, 23 Jan 2003 13:20:59 +0100


-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to