Hi,
is it possible to convert a Date variable value to unix timestamp number format ?
Hi,
is it possible to convert a Date variable value to unix timestamp number format ?
Is this what you are looking for ? - it has general multiplatform code for a lower resolution timestamp as well as the windows stuff…
Place the following method somewhere in a module:
Function UnixTime(Extends d As Date) As Integer
return d.TotalSeconds - 2082844800
End Function
You can now get the unix timestamps from your date objects as follow:
Function UnixTime(Extends d As Date) As Integer
return d.TotalSeconds - 2082844800
End Function
Sorry, second piece of code should have been:
Dim d as new Date
MsgBox Str(d.UnixTime)
MsgBox format(d.UnixTime,"#") else you end up in Scientific notation (just mentioned on another time related post a few min ago)
I like to give some background information because the question was in Getting started …
Xojo help states
UNIX date is based on [quote]Thu Jan 1 00:00:00 CET 1970[/quote]
So the value 2082844800 above is just the difference in seconds between these base dates .
You can calculate it like this:
dim unixDate As new Date(1970, 1, 1, 0, 0, 0)
MsgBox Format(unixDate.TotalSeconds, "#")
Thanks for the info
I’ve been having some issues with this as well.
I have a unixtime time stamp in my MySQl DB that was created by a Java server application.
The Xojo Application is a tool we provide for viewing this data.
I convert the unixtime stamp with a method that contains the following:
Dim d As New Date
Dim epochDate As Date =New Date(1970, 1, 1, 0, 0, 0,0.0) 'used to calculate the amount of seconds difference from RB epoch - 1904 to Unix - 1970
‘d.GMTOffset =0
d.TotalSeconds =( (milliseconds)/1000.0) + epochDate.TotalSeconds’ I was using this value but it doesn’t make any difference to the out come - 2082844800 seconds
Return d
I then use the Date object to format the results and display it in a readable way.
date.Hour + “:”+ date.Minute + “:” … etc
The problem is the time is always 1 hour behind what it should be. The Java code displays the unix timestamp correctly.
I’ve played around with the GMTOffset but not seen any changes. Is there anything else I can try?
dim unix_epoch As new Date(1970, 1, 1, 0, 0, 0)
dim today As new Date()
Dim gmtOffset As Integer = Xojo.Core.TimeZone.Current.SecondsFromGMT
dim unix_time as Integer = (today.TotalSeconds - unix_epoch.TotalSeconds) - gmtOffset
System.DebugLog(Str(unix_time))