2012-09-21 34 views

Respuesta

15

Versión corregida:

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

Está bien, pero tenga en cuenta que si está utilizando la función erlang: now() para obtener una marca de tiempo para comparar o una y el cálculo, si le dará una estimación de tiempo a partir del 1/1/1970, mientras que el calendario: datetime_to_gregorian_seconds/1 hace la evaluación desde 1/1/0. Entonces hay una diferencia de 719528 días ... – Pascal

+0

Vaya, tienes razón. Y dado que 'timestamp()' se define como a partir de 1970 si es posible, mi respuesta fue _no_ ok :) –

+1

He intentado la función anterior: Timestamp = datetime_to_now ({{2012, 9, 21}, {13, 21, 00 }}) luego calendar: now_to_local_time (Timestamp) devuelve {{2012,9,21}, {17,21,0}}. Mi zona horaria es + 4h. Como puedo entender, la función devuelve la marca de tiempo en UTC. ¿Derecha? –

1

puede utilizar esta

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

Esto es parte del módulo de esta Github/Arboreus

Cuestiones relacionadas