time between date and times

BlitzMax Forums/BlitzMax Beginners Area/time between date and times

Bremer(Posted 2008) [#1]
I have done a bit of searching but not found anything that got me closer, so I figured you guys might know of some clever code :)

I need a function which will allow me to input two dates and times, eg.

13 sep 2008 11:32:04
15 sep 2008 17:12:52

and then have the function return to me how much time is left. The time it returns can be millisecs if that is easier.

I will continue to tinker with it, but if any of you knows how to do this already, I would appreciate a helping hand.


GfK(Posted 2008) [#2]
There's something in the code archives that does this for the dates at least. Search for 'julian', I think.

IIRC, It's Blitzbasic code but it won't be much of an ordeal to convert it to run in Max, if it needs converting at all. Its just maths stuff.

[edit] http://www.blitzbasic.com/codearcs/codearcs.php?code=451

That'll *almost* work in Blitzmax right off the bat. You'll need to fix up the array declaration though, as they're defined as Global Month:string[12] in Blitzmax. Also bear in mind that this creates an array with 12 elements numbered 0 to 11, so you'll need to change the second line containing the array contents, too, since they start at 1 and count up to 12. Just change it to go from 0 to 11, or add define the array with 13 elements instead of 12. Either, or.

[edit again]
'Credit to Imphenzia for original code

Global Months:String[12]
Months(0)="JAN";Months(1)="FEB";Months(2)="MAR";Months(3)="APR";Months(4)="MAY";Months(5)="JUN"; Months(6)="JUL"; Months(7)="AUG"; Months(8)="SEP"; Months(9)="OCT"; Months(10)="NOV"; Months(11)="DEC"

Print "Days between today and 25 Dec 2008: " + (JulianDays("25 DEC 2008") - JulianDays(CurrentDate()))

Function FindMonth(fm$)
  For i=0 To 11
  If Upper(fm$)=months$(i) Then Return i
  Next
End Function

Function JulianDays(txt$)
  d=Int(Left(txt$,2))
  m=Int(FindMonth(Mid(txt$,4,3)))
  y=Int(Right(txt$,4))
  jd=( 1461 * ( y + 4800 + ( m - 14 ) / 12 ) ) / 4 + ( 367 * ( m - 2 - 12 * ( ( m - 14 ) / 12 ) ) ) / 12 - ( 3 * ( ( y + 4900 + ( m - 14 ) / 12 ) / 100 ) ) / 4 + d - 32075
  Return jd
End Function



Volker(Posted 2008) [#3]
There is although Brucey's timedate module. Perhaps it's overkill,
but you can find it here: http://brucey.net/programming/blitz/#bahdatetime


Nurgle(Posted 2008) [#4]
try this http://www.blitzbasic.com/codearcs/codearcs.php?code=1726 in code archives


Bremer(Posted 2008) [#5]
Not sure I need a complete module, but the above postings is getting me in the right direction. Thanks. I will glance the module over just in case though :)