View unanswered posts | View active topics It is currently Tue Apr 21, 2026 10:24 am



Reply to topic  [ 5 posts ] 
 Measuring Elapsed Time... 
Author Message
Commander
User avatar

Joined: Fri Jun 09, 2006 2:00 am
Posts: 1401
Location: Canada
Unread post Measuring Elapsed Time...
Try not to laff too hard at my attempt.. :mrgreen: But I'm trying to measure hours/minutes expired where accuracy to the thousandth of a second, is not required.

Tried to convert HH:MM into Minutes-Then and Minutes-Now, subtract the difference and convert back into HH:MM-Expired.

Code:
getTime $NOW_HRS "h"
getTime $NOW_MIN "n"
getTime $NOW_APM "a/p"

Echo "**" & $NOW_HRS & ":" & $NOW_MIN & $NOW_APM
if ($NOW_APM = "p")
   add $NOW_HRS 12
end
setVar $NOW_MIN ($NOW_MIN + ($NOW_HRS * 60))
setDelayTrigger   aan :qqq 60000
pause
:qqq
killalltriggers
getTime $_HRS "h"
getTime $_MIN "n"
getTime $_APM "a/p"
if ($_APM = "p")
   add $_HRS 12
end
setVar $MINS ($_MIN + ($_HRS * 60))
setPrecision 0
setVar $NEW (($MINS - $NOW_MINS) / 60)
setVar $NEQ (($MINS - $NOW_MINS) - $NEW)

Echo "**Expired: " & $NEW & ":" & $NEQ & "**"


Any ideas?

_________________
----------------------------
-= QUANTUM Computing 101: 15 = 3 x 5 ... 48% of the time.


Thu Jan 29, 2009 9:48 am
Profile ICQ YIM
Ambassador
User avatar

Joined: Mon Feb 09, 2004 3:00 am
Posts: 3141
Location: Kansas
Unread post Re: Measuring Elapsed Time...
Maybe something like the following would work, assuming a 24 hour clock time (military time):

Code:
# time expired

# testData
setVar $hourThen "12"
setVar $minThen "20"

getTime $hourNow "h"
getTime $minNow "n"

if ($minNow < $minThen)
   subTract $hourNow 1
   add $minNow 60
end

# 11 PM is 2300 military so a time of 0100 military for 1 AM would result 25 - 23 below
if ($hourNow < $hourThen)
   add $hourNow 24
end

setVar $elapsedHour ($hourNow - $hourThen)
setVar $elapsedMin ($minNow - $minThen)

echo ANSI_12 "*Elapsed Time " ANSI_10 $elapsedHour ANSI_12 " hour(s) " ANSI_10 $elapsedMin ANSI_12 " minute(s)**"


After thinking about it for a bit, gettime returns "normal" time I believe. So the addition would be 12 instead of 24 whenever the $hourNow is less than $hourThen.

_________________
               / Promethius / Enigma / Wolfen /

"A man who has no skills can be taught, a man who has no honor has nothing."


Thu Jan 29, 2009 1:01 pm
Profile ICQ
Veteran Op
User avatar

Joined: Thu Jun 02, 2005 2:00 am
Posts: 5558
Location: USA
Unread post Re: Measuring Elapsed Time...
You're talking about an absolute time function. To do that, at least when working w/ years, you need an Epoc. Here's a function I wrote a long time ago that does similar, you can probably convert it to your needs.

Code:
:convert_timestamp
    # Converts this format:
    # 9/13/2005 12:09:39 AM

    setVar $timestamp_result 0

    getWord $timestamp $date 1
    getWord $timestamp $time 2
    getWord $timestamp $ampm 3

    replaceText $date "/" " "
    replaceText $time ":" " "

    getWord $date $date_month 1
    getWord $date $date_day   2
    getWord $date $date_year  3

    getWord $time $time_hour 1
    getWord $time $time_min  2
    getWord $time $time_sec  3

    # Compensate for midnight and noon
    if ($time_hour = "12")
         setVar $time_hour 0
    end

    # Add 12 for PM
    if ($ampm = "PM")
          add $time_hour 12
    end

    # Figure seconds in today.
    setVar $these_seconds ($time_hour*3600) + ($time_min*60) + $time_sec

    # Figure days from months...
    if ($date_month = 1)
          setVar $days_offset 0
    elseif ($date_month = 2)
          setVar $days_offset 31
    elseif ($date_month = 3)
          setVar $days_offset 59
    elseif ($date_month = 4)
          setVar $days_offset 90
    elseif ($date_month = 5)
          setVar $days_offset 120
    elseif ($date_month = 6)
          setVar $days_offset 151
    elseif ($date_month = 7)
          setVar $days_offset 181
    elseif ($date_month = 8)
          setVar $days_offset 212
    elseif ($date_month = 9)
          setVar $days_offset 243
    elseif ($date_month = 10)
          setVar $days_offset 273
    elseif ($date_month = 11)
          setVar $days_offset 304
    elseif ($date_month = 12)
          setVar $days_offset 334
    end
    setVar $days_offset (($days_offset+$date_day)-1)
   
    setVar $leapyear_test ($date_year/4)
    setVar $leapy ($leapyear_test*4)
    if ($leapy = $date_year)
          # It didn't round, is it a leap year?
          setVar $leapyear_test ($date_year / 100)
          setVar $leapy ($leapyear_test*100)

          # Not an even century...
          if ($leapy <> $date_year)
               if ($date_month >= 3)
                    # March or later...
                   add $days_offset 1
               end
          end
    end

    # Hehe, Tradewars epoch?
    subtract $date_year 2002

    # Figure the number of days up to this year...
    setVar $year_offset ($date_year-1)
    setVar $year_offset ($year_offset*36500)
    setVar $year_offset ($year_offset/100)

    # Add up both this year and previous years...
    setVar $total_days  ($year_offset+$days_offset)

    # 24 hours per day. 60 minutes per hour. 60 seconds per minute.
    setVar $total_seconds (($total_days*86400)+$these_seconds)

    # Handle negatives...
    if ($total_seconds < 1)
           setVar $total_seconds 0
    end

    # Output result
    setVar $timestamp_result $total_seconds
return


Gives the number of seconds that has elapsed from the Epoc to the timestamp.

Edit: If you don't factor in the date then an HH:MM calculation will fail at midnight. So you pretty much have to do the entire thing in order to be accurate.

_________________
May the unholy fires of corbomite ignite deep within the depths of your soul...

1. TWGS server @ twgs.navhaz.com
2. The NavHaz Junction - Tradewars 2002 Scripts, Resources and Downloads
3. Open IRC chat @ irc.freenode.net:6667 #twchan
4. Parrothead wrote: Jesus wouldn't Subspace Crawl.

*** SG memorial donations via paypal to: dpocky68@booinc.com
Image


Thu Jan 29, 2009 1:50 pm
Profile ICQ WWW
Commander
User avatar

Joined: Fri Jun 09, 2006 2:00 am
Posts: 1401
Location: Canada
Unread post Re: Measuring Elapsed Time...
[quote="After thinking about it for a bit, gettime returns "normal" time I believe. So the addition would be 12 instead of 24 whenever the $hourNow is less than $hourThen.[/quote]

Crazy. Tried your code (changed $hourThen to current hour: 4pm), and the line: getTime $hourNow "h" came back with a 24hour value (ie instead of '4' I got '16').


Sing... gonna have to study your solution when I get a bit more time.. looking it over, I never imagined this would be so complex. lol

_________________
----------------------------
-= QUANTUM Computing 101: 15 = 3 x 5 ... 48% of the time.


Last edited by LoneStar on Thu Jan 29, 2009 5:46 pm, edited 1 time in total.



Thu Jan 29, 2009 4:57 pm
Profile ICQ YIM
Veteran Op
User avatar

Joined: Thu Jun 02, 2005 2:00 am
Posts: 5558
Location: USA
Unread post Re: Measuring Elapsed Time...
GetTime has a lot of different inputs...

http://www.navhaz.com/files/script.html#CMD_26

Quote:
Purpose: Retrieves the current system time, or a formatted value containing the time and/or date.

Syntax: getTime var [{format}]

var: A variable to hold the formatted time or date.

[{format}]: The format in which to return the time/date. If this is not specified, the variable will be set to hold the current system time in its default format.



Notes: This is an extemely powerful date/time formatting command.

Some components of the 'format' command are:

"d" : Displays the day of the month without a leading zero.
"dd" : Displays the day of the month with a leading zero.
"m": Displays the month without a leading zero.
"mm": Displays the month with a leading zero.
"yy": Displays a two digit year.
"yyyy": Displays a four digit year.

"h": Displays the hour without a leading zero.
"hh": Displays the hour with a leading zero.
"n": Displays the minute without a leading zero.
"nn": Displays the minute with a leading zero.
"s": Displays the second without a leading zero.
"ss": Displays the second with a leading zero.

"am/pm": Displays "am" or "pm" depending upon the time.
"a/p": Displays "a" or "p" depending upon the time.

"c": Displays the date in its system date format.
"t": Displays the time in its system time format.


Edit:
Someone (think it was EP) told me it's a direct passthru for Delphi's DateTime command. If that's the case there are other inputs too:

Links:
http://www.geekzilla.co.uk/View00FF7904 ... 20581F.htm
http://www.jstawski.com/archive/2008/05 ... tring.aspx

Try those and see what works.

_________________
May the unholy fires of corbomite ignite deep within the depths of your soul...

1. TWGS server @ twgs.navhaz.com
2. The NavHaz Junction - Tradewars 2002 Scripts, Resources and Downloads
3. Open IRC chat @ irc.freenode.net:6667 #twchan
4. Parrothead wrote: Jesus wouldn't Subspace Crawl.

*** SG memorial donations via paypal to: dpocky68@booinc.com
Image


Thu Jan 29, 2009 5:22 pm
Profile ICQ WWW
Display posts from previous:  Sort by  
Reply to topic   [ 5 posts ] 

Who is online

Users browsing this forum: No registered users and 16 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by wSTSoftware.