Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > HTML > OT: PHP elapsed time question...

Reply
Thread Tools

OT: PHP elapsed time question...

 
 
Noozer
Guest
Posts: n/a
 
      03-24-2006
I've got a PHP question (it's my first PHP script)... Hopefully there's a
quick answer.

Why does the following show a 17 hour difference when the "Some Stuff" code
actually takes only 42 seconds?

For output I get:
Elapsed time was 17:00.42.


<?php

$start_time = mktime();

//42 seconds of some stuff happening here

$finish_time = mktime();

echo "Elapsed time was ".(date("G:i.s",$finish_time-$start_time)).".";

?>



 
Reply With Quote
 
 
 
 
Jonathan N. Little
Guest
Posts: n/a
 
      03-24-2006
Noozer wrote:
> I've got a PHP question (it's my first PHP script)... Hopefully there's a
> quick answer.
>
> Why does the following show a 17 hour difference when the "Some Stuff" code
> actually takes only 42 seconds?
>
> For output I get:
> Elapsed time was 17:00.42.
>
>
> <?php
>
> $start_time = mktime();
>
> //42 seconds of some stuff happening here
>
> $finish_time = mktime();
>
> echo "Elapsed time was ".(date("G:i.s",$finish_time-$start_time)).".";
>
> ?>


Resolution, you are using the wrong function

http://www.php.net/manual/en/function.microtime.php
microtime()

vs

http://www.php.net/manual/en/function.mktime.php
mktime()

--
Take care,

Jonathan
-------------------
LITTLE WORKS STUDIO
http://www.LittleWorksStudio.com
 
Reply With Quote
 
 
 
 
Roman
Guest
Posts: n/a
 
      03-25-2006
Noozer wrote:
> I've got a PHP question (it's my first PHP script)... Hopefully there's a
> quick answer.
>
> Why does the following show a 17 hour difference when the "Some Stuff" code
> actually takes only 42 seconds?
>
> For output I get:
> Elapsed time was 17:00.42.
>
>
> <?php
>
> $start_time = mktime();
>
> //42 seconds of some stuff happening here
>
> $finish_time = mktime();
>
> echo "Elapsed time was ".(date("G:i.s",$finish_time-$start_time)).".";
>
> ?>


In my opinion the problem is that date() function returns local time. So
if you supply with integer number 42, that would translate into January
1 1970 00:00:42 GMT, but your timezone is GMT+17 or GMT-7 hours, so
that's where it comes from. Try gmdate().
 
Reply With Quote
 
Noozer
Guest
Posts: n/a
 
      03-25-2006

"Roman" <(E-Mail Removed)> wrote in message
news:VZ8Vf.3928$(E-Mail Removed)...
> Noozer wrote:
>> I've got a PHP question (it's my first PHP script)... Hopefully there's a
>> quick answer.
>>
>> Why does the following show a 17 hour difference when the "Some Stuff"
>> code
>> actually takes only 42 seconds?
>>
>> For output I get:
>> Elapsed time was 17:00.42.
>>
>>
>> <?php
>>
>> $start_time = mktime();
>>
>> //42 seconds of some stuff happening here
>>
>> $finish_time = mktime();
>>
>> echo "Elapsed time was ".(date("G:i.s",$finish_time-$start_time)).".";
>>
>> ?>

>
> In my opinion the problem is that date() function returns local time. So
> if you supply with integer number 42, that would translate into January
> 1 1970 00:00:42 GMT, but your timezone is GMT+17 or GMT-7 hours, so
> that's where it comes from. Try gmdate().


My problem was thinking that a timestamp of 0 = "00/00/00 00:00:00" but
instead means "1969/??/?? 17??"

What I was really trying to do was find the number of seconds between two
timestamps and format it in HH:MM:SS. I didn't know that timestamps were
actually measured in seconds either.

"$finish_time-$start_time" gives me the number of seconds between two
stamps, which is good enough. I would like to know if there is a simple way
format it out to "HH:MM:SS" (i.e. 123 seconds would output "00:02:03")


 
Reply With Quote
 
Roman
Guest
Posts: n/a
 
      03-25-2006
Noozer wrote:
> "Roman" <(E-Mail Removed)> wrote in message
> news:VZ8Vf.3928$(E-Mail Removed)...
>> Noozer wrote:
>>> I've got a PHP question (it's my first PHP script)... Hopefully there's a
>>> quick answer.
>>>
>>> Why does the following show a 17 hour difference when the "Some Stuff"
>>> code
>>> actually takes only 42 seconds?
>>>
>>> For output I get:
>>> Elapsed time was 17:00.42.
>>>
>>>
>>> <?php
>>>
>>> $start_time = mktime();
>>>
>>> //42 seconds of some stuff happening here
>>>
>>> $finish_time = mktime();
>>>
>>> echo "Elapsed time was ".(date("G:i.s",$finish_time-$start_time)).".";
>>>
>>> ?>

>> In my opinion the problem is that date() function returns local time. So
>> if you supply with integer number 42, that would translate into January
>> 1 1970 00:00:42 GMT, but your timezone is GMT+17 or GMT-7 hours, so
>> that's where it comes from. Try gmdate().

>
> My problem was thinking that a timestamp of 0 = "00/00/00 00:00:00" but
> instead means "1969/??/?? 17??"
>
> What I was really trying to do was find the number of seconds between two
> timestamps and format it in HH:MM:SS. I didn't know that timestamps were
> actually measured in seconds either.
>
> "$finish_time-$start_time" gives me the number of seconds between two
> stamps, which is good enough. I would like to know if there is a simple way
> format it out to "HH:MM:SS" (i.e. 123 seconds would output "00:02:03")
>
>


You got it right. The date() function as you used will print the time
from timestamp, where 0 corresponds to 01/01/70 00:00:00, so if you omit
the date part, you get string in your desired format. Only you have to
use GMT functions, otherwise the time-zone offset will be added.

I am pretty sure the date function is internally complicated and slow
for this purpose and there is probably a better way to do it. I am just
learning PHP and its libraries and I am not sure what is the resemblance
of PHP's printf() to the one in standard C library, but here is the C way:

printf("%02d:%02d:%02d", (span/3600)%24, (span/60)%60, span%60);

where variable span is the time difference.

Had you posted this question in in comp.lang.php, you wuld get more and
better advices.

Roman



 
Reply With Quote
 
 
 
Reply

Thread Tools

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 On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
PHP Training Institute In Delhi, Live Projects on PHP. Short TermPHP Courses, PHP Scripts, PHP Training with Live Projects. Rajive Narain Java 0 09-18-2009 10:47 AM
Date::Manip hours elapsed not business hours elapsed rutherf Perl Misc 2 10-28-2006 08:05 AM
Determining actual elapsed (wall-clock) time Peter Hansen Python 13 07-07-2005 10:20 PM
elapsed time of a program spider12 Java 5 07-21-2004 09:14 PM
getting elapsed time in milliseconds Thomas Baier C++ 6 09-22-2003 01:51 AM



Advertisments