This is a discussion on time format conversion within the alt.comp.lang.php forums, part of the PHP Programming Forums category; Hi... I have this format 2003-12-01 18:46:20.0 And would like it to be 01-12-...
|
|||||||
| FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
|
|||
|
setlocale (LC_TIME, "desired timezone")
"point" <point@caanNOproductionSPAM.com> schreef in bericht news:bqq10v0l5d@enews3.newsguy.com... > Hi... > > I have this format 2003-12-01 18:46:20.0 > > And would like it to be 01-12-2003 18:46:20 > > I know it can be done vis string cuts and explodes but ther's got to be a > better way using time functions.... > > Any help would be appriciated.. > > Thanx > > |
|
|||
|
point wrote:
> Hi... > > I have this format 2003-12-01 18:46:20.0 > > And would like it to be 01-12-2003 18:46:20 Try this code snippet... $before = "2003-12-01 18:46:20.0"; $after = date("d-m-Y H:i:s",strtotime(substr($before,0,19))); print "Before = {$before}<br>After = {$after}"; The .0 on your date threw strtotime, hence the substr. I hope that helps, Kelv :) ---- LoHost - Low cost high uptime Internet Services. UK & USA PHP,MySQL,Domains,Spam/virus blocking,POP3/IMAP/SMTP auth SSH&SCP/FTP/FP2k,logs,stats & more! http://www.lohost.com |
|
|||
|
point wrote:
> I have this format 2003-12-01 18:46:20.0 > > And would like it to be 01-12-2003 18:46:20 <?php $old_format='2003-12-01 18:46:20.0'; $new_format=date('m-d-Y H:i:s',strtotime(substr($old_format,0,strpos($old_ format,'.')))); echo $new_format; ?> -- Justin Koivisto - spam@koivi.com PHP POSTERS: Please use comp.lang.php for PHP related questions, alt.php* groups are not recommended. |
|
|||
|
point wrote:
> > Hi... > > I have this format 2003-12-01 18:46:20.0 > > And would like it to be 01-12-2003 18:46:20 > > I know it can be done vis string cuts and explodes but ther's got to be a > better way using time functions.... You have this as a string? If so, something like $date = preg_replace("/^(\d+)-(\d+)-(\d+) (\d+:\d+:\d+)(\.\d*)?$/", "\$3-\$2-\$1 \$4", $date); should work, but I haven't tested it. Regards, Shawn -- Shawn Wilson shawn@glassgiant.com http://www.glassgiant.com |
|
|||
|
Thanx guys...
I went for the Shawn's solution....nice one :) Respect.. p "Shawn Wilson" <shawn@glassgiant.com> wrote in message news:3FD09706.2C8DAB80@glassgiant.com... > point wrote: > > > > Hi... > > > > I have this format 2003-12-01 18:46:20.0 > > > > And would like it to be 01-12-2003 18:46:20 > > > > I know it can be done vis string cuts and explodes but ther's got to be a > > better way using time functions.... > > You have this as a string? > > If so, something like > > $date = preg_replace("/^(\d+)-(\d+)-(\d+) (\d+:\d+:\d+)(\.\d*)?$/", "\$3-\$2-\$1 > \$4", $date); > > should work, but I haven't tested it. > > Regards, > Shawn > -- > Shawn Wilson > shawn@glassgiant.com > http://www.glassgiant.com |
|
|||
|
point <point@caanNOproductionSPAM.com> wrote:
> Thanx guys... > > I went for the Shawn's solution....nice one :) Shawn's solution, while valid, can be heavy on server resources and take longer. strtotime() does just what you want and returns the timestamp, which can be used with date() -- Michael Wilcox mjwilco at yahoo dot com Essential Tools for the Web Developer - http://mikewilcox.t35.com |
|
|||
|
hm..interesting...
thanx fo rthat... "Michael Wilcox" <mjwilcoCANTHAVESPAM@yahoo.com> wrote in message news:i07Ab.703$7p2.518@newsread2.news.atl.earthlin k.net... > point <point@caanNOproductionSPAM.com> wrote: > > Thanx guys... > > > > I went for the Shawn's solution....nice one :) > > Shawn's solution, while valid, can be heavy on server resources and take > longer. strtotime() does just what you want and returns the timestamp, which > can be used with date() > -- > Michael Wilcox > mjwilco at yahoo dot com > Essential Tools for the Web Developer - http://mikewilcox.t35.com > > |
|
|||
|
point wrote:
> > hm..interesting... > > thanx fo rthat... > > "Michael Wilcox" <mjwilcoCANTHAVESPAM@yahoo.com> wrote in message > news:i07Ab.703$7p2.518@newsread2.news.atl.earthlin k.net... > > point <point@caanNOproductionSPAM.com> wrote: > > > Thanx guys... > > > > > > I went for the Shawn's solution....nice one :) > > > > Shawn's solution, while valid, can be heavy on server resources and take > > longer. strtotime() does just what you want and returns the timestamp, > which > > can be used with date() > > -- > > Michael Wilcox Actually, I tested the three solutions presented (mine, Justin's, and Kelv's). Mine was the fastest by a significant amount. I think, probably because you have the search in strtotime(). I would use strtotime() only if you want a timestamp as the final result (ie. for storing in a database). With that said, with any solution it took 1/3 to 1/2 second to convert 10,000 dates. So if you're only doing a few you shouldn't notice any difference. The test was run over 10,000 randomly generated date strings, in the format that Point mentioned. The results were: Shawn's preg() - 0.31105196475983 seconds Kelv's date() - 0.41387701034546 seconds Justin's date() - 0.44852697849274 seconds I ran it a number of times. I changed the order around a bunch of times and in each case the results were similar to that shown above. The code is below if anyone sees a problem with it, let me know. Note: I did this to satisfy my own curiosity, not to be a prick about my solution being critiqued :o) Regards, Shawn <?PHP function getmicrotime(){ list($usec, $sec) = explode(" ",microtime()); return ((float)$usec + (float)$sec); } $arrDates = array(); for ($i = 0; $i < 10000; ++$i) { array_push($arrDates, strftime("%Y-%m-%d %H:%M:%S.".rand(0,9), rand(0,time()))); } $time_start = getmicrotime(); $date = ""; foreach ($arrDates as $var) $date = date('d-m-Y H:i:s',strtotime(substr($var,0,strpos($var,'.')))) ; $time_end = getmicrotime(); $time = $time_end - $time_start; echo "<br><Br>Justin's date() - $time seconds"; $time_start = getmicrotime(); $date = ""; foreach ($arrDates as $var) $date = date("d-m-Y H:i:s",strtotime(substr($var,0,19))); $time_end = getmicrotime(); $time = $time_end - $time_start; echo "<br><Br>Kelv's date() - $time seconds"; $time_start = getmicrotime(); $date = ""; foreach ($arrDates as $var) $date = preg_replace("/^(\d+)-(\d+)-(\d+) (\d+:\d+:\d+)(\.\d*)?$/", "\$3-\$2-\$1 \$4, ", $var); $time_end = getmicrotime(); $time = $time_end - $time_start; echo "<br><Br>Shawn's preg() - $time seconds"; ?> -- Shawn Wilson shawn@glassgiant.com http://www.glassgiant.com |
|
|||
|
even more interesting :)
...... "Shawn Wilson" <shawn@glassgiant.com> wrote in message news:3FD4917E.267387E4@glassgiant.com... > point wrote: > > > > hm..interesting... > > > > thanx fo rthat... > > > > "Michael Wilcox" <mjwilcoCANTHAVESPAM@yahoo.com> wrote in message > > news:i07Ab.703$7p2.518@newsread2.news.atl.earthlin k.net... > > > point <point@caanNOproductionSPAM.com> wrote: > > > > Thanx guys... > > > > > > > > I went for the Shawn's solution....nice one :) > > > > > > Shawn's solution, while valid, can be heavy on server resources and take > > > longer. strtotime() does just what you want and returns the timestamp, > > which > > > can be used with date() > > > -- > > > Michael Wilcox > > > Actually, I tested the three solutions presented (mine, Justin's, and Kelv's). > Mine was the fastest by a significant amount. I think, probably because you have > the search in strtotime(). I would use strtotime() only if you want a timestamp > as the final result (ie. for storing in a database). With that said, with any > solution it took 1/3 to 1/2 second to convert 10,000 dates. So if you're only > doing a few you shouldn't notice any difference. > > The test was run over 10,000 randomly generated date strings, in the format that > Point mentioned. The results were: > > Shawn's preg() - 0.31105196475983 seconds > Kelv's date() - 0.41387701034546 seconds > Justin's date() - 0.44852697849274 seconds > > I ran it a number of times. I changed the order around a bunch of times and in > each case the results were similar to that shown above. The code is below if > anyone sees a problem with it, let me know. Note: I did this to satisfy my own > curiosity, not to be a prick about my solution being critiqued :o) > > Regards, > Shawn > > <?PHP > > function getmicrotime(){ > list($usec, $sec) = explode(" ",microtime()); > return ((float)$usec + (float)$sec); > } > > $arrDates = array(); > > for ($i = 0; $i < 10000; ++$i) { > array_push($arrDates, strftime("%Y-%m-%d %H:%M:%S.".rand(0,9), > rand(0,time()))); > } > > > $time_start = getmicrotime(); > $date = ""; > foreach ($arrDates as $var) > $date = date('d-m-Y H:i:s',strtotime(substr($var,0,strpos($var,'.')))) ; > > $time_end = getmicrotime(); > $time = $time_end - $time_start; > > echo "<br><Br>Justin's date() - $time seconds"; > > > > > > $time_start = getmicrotime(); > $date = ""; > foreach ($arrDates as $var) > $date = date("d-m-Y H:i:s",strtotime(substr($var,0,19))); > > $time_end = getmicrotime(); > $time = $time_end - $time_start; > > echo "<br><Br>Kelv's date() - $time seconds"; > > > > > > $time_start = getmicrotime(); > $date = ""; > foreach ($arrDates as $var) > $date = preg_replace("/^(\d+)-(\d+)-(\d+) (\d+:\d+:\d+)(\.\d*)?$/", > "\$3-\$2-\$1 \$4, ", $var); > $time_end = getmicrotime(); > $time = $time_end - $time_start; > > echo "<br><Br>Shawn's preg() - $time seconds"; > > ?> > -- > Shawn Wilson > shawn@glassgiant.com > http://www.glassgiant.com |