2012-09-21 17 views

回答

15

修正版本:

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

没问题,但是要注意,如果你正在使用函数erlang:now()来获取比较的时间戳或者y计算,如果从1970年1月1日开始计算时间,而日历:datetime_to_gregorian_seconds/1计算1/1/0。所以有719528天的差异... – Pascal

+0

糟糕,你是对的。因为'timestamp()'被定义为从1970年开始,如果可能的话,我的答案是_not_ ok :) –

+1

我已经尝试了上面的函数:Timestamp = datetime_to_now({{2012,9,21},{13,21,00 }}),则日历:now_to_local_time(Timestamp)返回{{2012,9,21},{17,21,0}}。我的时区是+ 4小时。据我所知,该函数返回UTC中的时间戳。对? –

1

您可以使用此

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

这是从这个 Github/Arboreus

相关问题