Re: Bug in smarty_modifier_date_format
Danilo Buerger <[email protected]> Wed, 10 Jan 2007 18:29:47 +0100
| Newsgroups | gmane.comp.php.smarty.devel |
|---|---|
| Message-ID | <[email protected]> |
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hey,
Even so strftime expects a unix timestamp ("The optional timestamp
parameter is an integer Unix timestamp [...]" --
http://de.php.net/strftime).
But as the manual says: "The only exception are mysql timestamps: They
are also numeric only and 14 characters long (YYYYMMDDHHMMSS)" --
http://smarty.php.net/manual/en/language.modifier.date.format.php.
print_r(strftime('%I', '20070101121212'));
Outputs "04".
Thats certainly not right. Thats why i think smarty_make_timestamp()
should be called anyway. (I guess it was confusing because i was giving
you a different mysql timestamp format than the manual says is allowed).
Greets
boots schrieb:
> Hi.
>
> I think the manual is clear that only the numeric only version of the MySQL
> timestamp is supported.
> http://smarty.php.net/manual/en/language.modifier.date.format.php
>
> I say it is better to use MySQL's UNIX_TIMESTAMP(foo) for other (all) cases.
>
> Personally, I vote against this change but I encourage others to comment.
>
> Best Regards!
> boots
>
> --- Danilo Buerger <[email protected]> wrote:
>
> "The TIMESTAMP data type has varying properties, depending on the MySQL
> version and the SQL mode the server is running in. These properties are
> described later in this section." --
> http://dev.mysql.com/doc/refman/5.0/en/datetime.html
>
> For example (on 5.0.16):
> | Field | Type | Null | Key | Default | Extra
> |
> | date | timestamp | YES | | 0000-00-00 00:00:00 |
> |
>
> But either way if its a datetime or a timestamp applying
> smarty_make_timestamp to it still solves the problem.
>
> boots schrieb:
>>>> Hi.
>>>>
>>>> That looks like a MySQL datetime rather than a timestamp. Otherwise, looks
>>>> good. I've committed the %R fix to CVS.
>>>>
>>>> Thanks!
>>>>
>>>> boots
>>>>
>>>> --- Danilo Buerger <[email protected]> wrote:
>>>>
>>>> Small errata: it should be smarty_make_timestamp() instead of
>>>> smarty_make_time_stamp() of course.
>>>>
>>>> Danilo Buerger schrieb:
>>>>>>> Hello list,
>>>>>>>
>>>>>>> when using Smarty in a Windows environment (substr(PHP_OS,0,3) == 'WIN')
>>>>>>> and trying to format a MySQL timestamp (0000-00-00 00:00:00) an error
>>>>>>> occurs because the string is passed to strftime() without applying
>>>>>>> smarty_make_time_stamp() to the string first. Another bug occurs when
>>>>>>> using the %R format (which is unknown to Windows, see
>>>>>>>
>> http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_crt_strftime.2c_.wcsftime.asp)).
>>>>>>> So here is the diff that should fix these problems:
>>>>>>>
>>>>>>> Index: smarty-2.6.16/plugins/modifier.date_format.php
>>>>>>> ===================================================================
>>>>>>> --- smarty-2.6.16/plugins/modifier.date_format.php (revision 84)
>>>>>>> +++ smarty-2.6.16/plugins/modifier.date_format.php (working copy)
>>>>>>> @@ -31,10 +31,10 @@
>>>>>>> function smarty_modifier_date_format($string, $format="%b %e, %Y",
>>>>>>> $default_date=null)
>>>>>>> {
>>>>>>> if (substr(PHP_OS,0,3) == 'WIN') {
>>>>>>> - $hours = strftime('%I', $string);
>>>>>>> + $hours = strftime('%I', smarty_make_time_stamp($string));
>>>>>>> $short_hours = ( $hours < 10 ) ? substr( $hours, -1) : $hours;
>>>>>>> - $_win_from = array ('%e', '%T', '%D', '%l');
>>>>>>> - $_win_to = array ('%#d', '%H:%M:%S', '%m/%d/%y',
>>>>>>> $short_hours);
>>>>>>> + $_win_from = array ('%e', '%T', '%D', '%l',
>>>>>>> '%R');
>>>>>>> + $_win_to = array ('%#d', '%H:%M:%S', '%m/%d/%y',
>>>>>>> $short_hours, '%H:%M');
>>>>>>> $format = str_replace($_win_from, $_win_to, $format);
>>>>>>> }
>>>>>>> if($string != '') {
>>>>>>>
>>>>>>> Greets,
>>>>>>>
>>>>>>> Danilo Bürger
>> ____________________________________________________________________________________
>>>> Do you Yahoo!?
>>>> Everyone is raving about the all-new Yahoo! Mail beta.
>>>> http://new.mail.yahoo.com
>>
- --
Smarty Development Mailing List (http://smarty.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
>>
>>
> __________________________________________________
> Do You Yahoo!?
> Tired of spam? Yahoo! Mail has the best spam protection around
> http://mail.yahoo.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Darwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFFpSKKrwsg9y2CBIURAvyIAJ9Ay4fspwnhpOYf3tr5c4f7qQSrvQCgtaGi
1+x5Chm0KzeP88le6HozpdM=
=9HUA
-----END PGP SIGNATURE-----
--
Smarty Development Mailing List (http://smarty.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php