time format conversion

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-...


Go Back   Usenet Forums > PHP Programming Forums > alt.comp.lang.php

FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 12-05-2003
point
 
Posts: n/a
Default time format conversion

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


Reply With Quote
  #2 (permalink)  
Old 12-05-2003
Rob
 
Posts: n/a
Default Re: time format conversion

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
>
>



Reply With Quote
  #3 (permalink)  
Old 12-05-2003
Kelv
 
Posts: n/a
Default Re: time format conversion

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

Reply With Quote
  #4 (permalink)  
Old 12-05-2003
Justin Koivisto
 
Posts: n/a
Default Re: time format conversion

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.

Reply With Quote
  #5 (permalink)  
Old 12-05-2003
Shawn Wilson
 
Posts: n/a
Default Re: time format conversion

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
Reply With Quote
  #6 (permalink)  
Old 12-05-2003
point
 
Posts: n/a
Default Re: time format conversion

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



Reply With Quote
  #7 (permalink)  
Old 12-05-2003
Michael Wilcox
 
Posts: n/a
Default Re: time format conversion

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


Reply With Quote
  #8 (permalink)  
Old 12-07-2003
point
 
Posts: n/a
Default Re: time format conversion

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
>
>



Reply With Quote
  #9 (permalink)  
Old 12-08-2003
Shawn Wilson
 
Posts: n/a
Default Re: time format conversion

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
Reply With Quote
  #10 (permalink)  
Old 12-10-2003
point
 
Posts: n/a
Default Re: time format conversion

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



Reply With Quote
Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are Off
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT +1. The time now is 01:43 AM.


Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.0.0