Re: [SMARTY-DEV] Bug in smarty_modifier_date_format
| From: | boots | Date: | Wed, 10 Jan 2007 16:37:30 +0000 |
| Subject: | Re: [SMARTY-DEV] Bug in smarty_modifier_date_format | ||
| References: | 1 | Groups: | php.smarty.dev |
| Request: | Send a blank email to php-smarty-dev+get-2927@lists.php.net to get a copy of this message | ||
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 <danilo@blizzz.org> wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> "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 <danilo@blizzz.org> 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
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.5 (Darwin)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
>
> iD8DBQFFpRSsrwsg9y2CBIURAqARAJ9l6lBwqv9dlG2y+jqlDQR0DVSsjQCfazcq
> yCdXpTOD81ASUmgqvU0af6c=
> =xWMN
> -----END PGP SIGNATURE-----
>
> --
> 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