2010-09-08 51 views
3

是否有任何簡單的方法將erlang datetime表示法轉換爲now/0表示法?Date to Megaseconds

基本上,我需要這個函數的反函數:

{Date, Time} = calendar:now_to_datetime(now()). 

因此,像

{Megaseconds, Seconds, Microsecods} = datetime_to_now({Date, Time}) 

回答

2

我收回我的問題。看起來,我的google-fu沒有被加熱。以下完全是我想要的。

-define(GREGORIAN_SECONDS_1970, 62167219200). 

datetime_to_now(DateTime) -> 
    GSeconds = calendar:datetime_to_gregorian_seconds(DateTime), 
    ESeconds = GSeconds - ?GREGORIAN_SECONDS_1970, 
    {ESeconds div 1000000, ESeconds rem 1000000, 0}. 
+0

GREGORIAN_SECONDS_1970神奇數字代表什麼? – Vanya 2010-09-10 06:42:21

+0

Erlang's now()從1970年1月1日開始計算兆數/秒/微秒數。但是,datetime_to_gregorian_seconds計算從日曆開始算起的秒數。 神奇的數字是直到1970年的秒數。 我想它可能已被寫入 -define(GREGORIAN_SECONDS_1970,calendar:datetime_to_gregorian_seconds({{1970,1,1},{0,0,0}}) 。 – Olives 2010-09-10 19:42:36