This function returns a string which is the combined date and time from the unixtime number provided. It is the counterpart of the
UnixTime function - Humantime() and Unixtime() translate each-others outputs.
A format option formats the date part as follows:
- DD-MM-YYYY when opt=0 or omitted (this matches DATE$)
- YYYY-MM-DD when opt<>0
The option can be omitted if required
Syntax:HumanTime(ut[,option])
Example Usage:Print HumanTime(ut_from_log,1)
or
Print HumanTime(ut_my_birthday)
Dependencies: The following functions must be included in your program for HumanTime() to work correctly...
Function HumanTime(UUT As Integer,opt As Integer) As String
' take seconds since 1970-01-01 (unixtime) and converts to a human form date/time as
' if opt=0 (or not specified) the format is dd-mm-yyyy hh:mm:ss" to match the format of DATE$
' if opt<>0 the date part is returned as yyyy-mm-dd to aid sorting and avoid
Local integer d,m,s,y,z,UT
UT=UUT 'preserve original argument
If UT<0 Then HumanTime$="":Exit Function
y=1970:d=UT\86400:s=UT Mod 86400
Do
z=365+IsLeapYear(y)
If d>=z Then
d=d-z:y=y+1
Else
Exit Do
EndIf
Loop
'here, Y is the current year and d the remaining days
m=1' start at january
' days between the start of the year and the current month
Do
z=0
Select Case m
Case 1,3,5,7,8,10
If d>=31 Then d=d-31:z=1
Case 2
If IsLeapYear(y)Then
If d>=29 Then d=d-29:z=1
Else
If d>=28 Then d=d-28:z=1
EndIf
Case 4,6,9,11
If d>=30 Then d=d-30:z=1
End Select
If z=1 Then
m=m+1
Else
d=d+1:Exit Do 'first day is 1 not 0
EndIf
Loop
If opt<>0 Then
HumanTime$=Str$(y)+"-"+ZPad$(m,2)+"-"+ZPad$(d,2)
Else
HumanTime$=ZPad$(d,2)+"-"+ZPad$(m,2)+"-"+Str$(y)
EndIf
y=s\3600:s=s-y*3600
m=s\60:s=s-m*60
HumanTime$=HumanTime$+" "+ZPad$(y,2)+":"+ZPad$(m,2)+":"+ZPad$(s,2)
End Function
See Also:
UnixTime()