2012-09-21 14 views

risposta

15

Versione corretta:

Seconds = calendar:datetime_to_gregorian_seconds(DateTime) - 62167219200, 
%% 62167219200 == calendar:datetime_to_gregorian_seconds({{1970, 1, 1}, {0, 0, 0}}) 
{Seconds div 1000000, Seconds rem 1000000, 0}. 
+3

Va bene, ma attenzione che se si utilizza la funzione erlang: now() per ottenere un timestamp per il confronto o un y calcolo, se ti darà una stima del tempo a partire dal 1/1/1970, mentre calendar: datetime_to_gregorian_seconds/1 rende la valutazione da 1/1/0. Quindi c'è una differenza di 719528 giorni ... – Pascal

+0

Oops, hai ragione. E poiché 'timestamp()' è definito a partire dal 1970, se possibile, la mia risposta è stata _non_ ok :) –

+1

Ho provato la funzione di sopra: Timestamp = datetime_to_now ({{2012, 9, 21}, {13, 21, 00 }}) quindi calendar: now_to_local_time (Timestamp) restituisce {{2012,9,21}, {17,21,0}}. Il mio fuso orario è + 4 ore. Come posso capire la funzione restituisce il timestamp in UTC. Destra? –

1

si potrebbe utilizzare questo

to_timestamp({{Year,Month,Day},{Hours,Minutes,Seconds}}) -> 
(calendar:datetime_to_gregorian_seconds(
    {{Year,Month,Day},{Hours,Minutes,Seconds}} 
) - 62167219200)*1000000; 

Questo fa parte del modulo da questo Github/Arboreus

Problemi correlati