Torno alla questione della quantità di secondi trascorsi dalla data iniziale UNIX.
Ebbene, a me queste due righe
non restituiscono il medesimo risultato:
Public Sub Main()
Print CFloat(DateDiff(CDate("01/01/1970"), Now, gb.Second))
Print CFloat(Date.ToUnixTime(Now))
End
Affinché i due risultati siano identici, devo aggiungere 4 ore alla data/orario presente nella prima riga, cioè così:
Public Sub Main()
Print CFloat(DateDiff(CDate("01/01/1970 04:00:00"), Now, gb.Second))
Print CFloat(Date.ToUnixTime(Now))
End
Risulta anche a voi ?
Il problema sembra essere la prima riga, giacché utilizzando funzioni esterne standard C, ottengo il risultato identico alla seconda riga:
Library "libc:6"
Public Struct timespec
tv_sec As Long
tv_nsec As Long
End Struct
Private Const CLOCK_REALTIME As Integer = 0
' int clock_gettime (clockid_t __clock_id, struct timespec *__tp)
' Get current value of clock CLOCK_ID and store it in TP.
Private Extern clock_gettime(__clock_id As Integer, __tp As Timespec) As Integer
Public Sub Main()
Dim spec As New Timespec
clock_gettime(CLOCK_REALTIME, spec)
Print spec.tv_sec, "(dalla funzione esterna)"
Print CFloat(Date.ToUnixTime(Now)), "(con il Metodo .ToUnixTime() )"
Print CFloat(DateDiff("01/01/1970 04:00:00", Now, gb.Second)), "(con 4 ore aggiuntive)"
Print CFloat(DateDiff("01/01/1970", Now, gb.Second)), "(senza ore aggiuntive)"
End