2012-02-29 40 views
4

在我的項目二郎:現在轉化爲高精度時間戳(BIGINT)存儲在MySQL:二郎:現在時間戳,然後再返回

timestamp({Mega, Secs, Micro}) -> 
    Mega*1000*1000*1000*1000 + Secs * 1000 * 1000 + Micro. 

我現在的時間戳轉換回原單{米加,秒,微}元組使用:

time_tuple(Timestamp) -> 
    TimeList = erlang:integer_to_list(Timestamp), 
    Mega = erlang:list_to_integer(string:substr(TimeList, 1, 4)), 
    Sec = erlang:list_to_integer(string:substr(TimeList, 5, 6)), 
    Micro = erlang:list_to_integer(string:substr(TimeList, 11, 6)), 
    {Mega, Sec, Micro}. 

串轉換/ SUBSTR感覺難看,和可能的不正確,黑客攻擊。什麼會是更優雅的方式?

回答

14

我可能會錯過一些東西,但爲什麼不使用除法和模數呢?

> {Mega, Sec, Micro} = now(). 
> Timestamp = Mega * 1000000 * 1000000 + Sec * 1000000 + Micro. 
> {Mega1, Sec1, Micro1} = {Timestamp div 1000000000000, 
          Timestamp div 1000000 rem 1000000, 
          Timestamp rem 1000000}. 
+3

是偏離正軌。我猜想需要更多的咖啡;-) – 2012-02-29 08:57:50