Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:21744 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 80156 invoked by uid 1010); 31 Jan 2006 13:22:04 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 80140 invoked from network); 31 Jan 2006 13:22:04 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 31 Jan 2006 13:22:04 -0000 X-Host-Fingerprint: 66.249.82.203 xproxy.gmail.com Linux 2.4/2.6 Received: from ([66.249.82.203:53368] helo=xproxy.gmail.com) by pb1.pair.com (ecelerity 2.0 beta r(6323M)) with SMTP id 4C/41-21949-B746FD34 for ; Tue, 31 Jan 2006 08:22:04 -0500 Received: by xproxy.gmail.com with SMTP id t10so388434wxc for ; Tue, 31 Jan 2006 05:22:00 -0800 (PST) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:sender:to:subject:mime-version:content-type; b=IW+SPoMuKgiGexAPpzEeb6PMs4fiJiYUFuRBGF9Ln6dfvw8cObvsRt3Qo92oyruNRI1jDuaRzYJ5LryHbfM9HyzBUdT39q3x0f+1TMkSmGwGoxaiKUokgJbQTL32lwBKAKmZlSwINrxM6Q7RcRJLdxgJv4cwZBJ+ZKi2S1Prw7Y= Received: by 10.70.19.6 with SMTP id 6mr1858745wxs; Tue, 31 Jan 2006 05:21:59 -0800 (PST) Received: by 10.70.42.19 with HTTP; Tue, 31 Jan 2006 05:21:59 -0800 (PST) Message-ID: <7f3ed2c30601310521u133b7dd0w76126261aedd30ea@mail.gmail.com> Date: Tue, 31 Jan 2006 14:21:59 +0100 Sender: hannes.magnusson@gmail.com To: internals@lists.php.net, Derick Rethans MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_11824_1825843.1138713719781" Subject: [PATCH] New date() format character - fix for the DATE_ATOM constant From: bjori@php.net (Hannes Magnusson) ------=_Part_11824_1825843.1138713719781 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Hi all I'd like to propose a new date() format character, "P", which behaves exactly like "O" except it adds colon between the hours and minutes. This patch also fixes current DATE_ATOM constant to print out RFC3339 valid timestamps (bug #36224). - Hannes ------=_Part_11824_1825843.1138713719781 Content-Type: text/plain; name=atom.patch.txt; charset=us-ascii Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="atom.patch.txt" Index: php_date.c =================================================================== RCS file: /repository/php-src/ext/date/php_date.c,v retrieving revision 1.43.2.39 diff -u -r1.43.2.39 php_date.c --- php_date.c 28 Jan 2006 06:18:01 -0000 1.43.2.39 +++ php_date.c 31 Jan 2006 13:14:49 -0000 @@ -235,6 +235,7 @@ #define DATE_TIMEZONEDB php_date_global_timezone_db ? php_date_global_timezone_db : timelib_builtin_db() +#define DATE_FORMAT_RFC3339 "Y-m-d\\TH:i:sP" #define DATE_FORMAT_ISO8601 "Y-m-d\\TH:i:sO" #define DATE_FORMAT_RFC1036 "l, d-M-y H:i:s T" #define DATE_FORMAT_RFC1123 "D, d M Y H:i:s T" @@ -260,7 +261,7 @@ #ifdef EXPERIMENTAL_DATE_SUPPORT date_register_classes(TSRMLS_C); #endif - REGISTER_STRING_CONSTANT("DATE_ATOM", DATE_FORMAT_ISO8601, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("DATE_ATOM", DATE_FORMAT_RFC3339, CONST_CS | CONST_PERSISTENT); REGISTER_STRING_CONSTANT("DATE_COOKIE", DATE_FORMAT_RFC1123, CONST_CS | CONST_PERSISTENT); REGISTER_STRING_CONSTANT("DATE_ISO8601", DATE_FORMAT_ISO8601, CONST_CS | CONST_PERSISTENT); REGISTER_STRING_CONSTANT("DATE_RFC822", DATE_FORMAT_RFC1123, CONST_CS | CONST_PERSISTENT); @@ -459,6 +460,7 @@ char buffer[33]; timelib_time_offset *offset; timelib_sll isoweek, isoyear; + int rfc_colon = 0; if (!format_len) { return estrdup(""); @@ -537,9 +539,11 @@ /* timezone */ case 'I': snprintf(buffer, 32, "%d", localtime ? offset->is_dst : 0); break; - case 'O': snprintf(buffer, 32, "%c%02d%02d", + case 'P': rfc_colon = 1; + case 'O': snprintf(buffer, 32, "%c%02d%s%02d", localtime ? ((offset->offset < 0) ? '-' : '+') : '+', localtime ? abs(offset->offset / 3600) : 0, + rfc_colon ? ":" : "", localtime ? abs((offset->offset % 3600) / 60) : 0 ); break; @@ -1198,7 +1202,7 @@ #define REGISTER_DATE_CLASS_CONST_STRING(const_name, value) \ 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_ISO8601); + REGISTER_DATE_CLASS_CONST_STRING("ATOM", DATE_FORMAT_RFC3339); REGISTER_DATE_CLASS_CONST_STRING("COOKIE", DATE_FORMAT_RFC1123); REGISTER_DATE_CLASS_CONST_STRING("ISO8601", DATE_FORMAT_ISO8601); REGISTER_DATE_CLASS_CONST_STRING("RFC822", DATE_FORMAT_RFC1123); ------=_Part_11824_1825843.1138713719781--