Re: [SMARTY-DEV] Bug in smarty_modifier_date_format
| From: | boots | Date: | Wed, 10 Jan 2007 18:57:34 +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-2931@lists.php.net to get a copy of this message | ||
Hi.
I didn't use your diff, but I did copy and paste from it. My bad. Anyways, I
had just noticed this myself and corrected in CVS.
Cheers!
boots
--- Danilo Buerger <danilo@blizzz.org> wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Hey,
>
> you used smarty_make_time_stamp() which does not work.
>
> I guess this is my fault because my initial diff contained that. You
> must have missed my second mail:
>
> ">>>>>>> --- Danilo Buerger <danilo@blizzz.org> wrote:
> >>>>>>>
> >>>>>>> Small errata: it should be smarty_make_timestamp() instead of
> >>>>>>> smarty_make_time_stamp() of course."
>
> Greets
>
> boots schrieb:
> > Hi.
> >
> > You convinced me and I have updated CVS accordingly.
> >
> > Thanks a second time!
> >
> > boots
> >
> > --- Danilo Buerger <danilo@blizzz.org> wrote:
> > 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 <danilo@blizzz.org> 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 <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
> > --
> > Smarty Development Mailing List (http://smarty.php.net/)
> > To unsubscribe, visit: http://www.php.net/unsub.php
> >
> >>
>
> >
>
____________________________________________________________________________________
> > Yahoo! Music Unlimited
> > Access over 1 million songs.
> > http://music.yahoo.com/unlimited
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.5 (Darwin)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
>
> iD8DBQFFpTMxrwsg9y2CBIURArRFAJ9vre3tmDnAmQitgIo2pok/eed2zgCfSYQn
> 3uDqD91qNDUh0cf/bUewdLQ=
> =PFeO
> -----END PGP SIGNATURE-----
>
> --
> Smarty Development Mailing List (http://smarty.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>
____________________________________________________________________________________
Want to start your own business?
Learn how on Yahoo! Small Business.
http://smallbusiness.yahoo.com/r-index