2016-08-24 11 views
1

エリクシルでは、Ecto.DateTimeを整数ミリ秒に変換する最良の方法は何ですか?Ecto.DateTimeをミリ秒に変換する

私はthis exampleを見ました。私はミリ秒間それを適応させたと信じていますが、私のアプローチには注意点があるかどうかを知りたいと思います。

(((datetime 
    |> Ecto.DateTime.to_erl 
    |> :calendar.datetime_to_gregorian_seconds 
    |> Kernel.-(62167219200)) * 1000000) + datetime.usec) 
|> div(1000) 

答えて

1

計算が正しいと思われます。あなたは少しより多くのパイプを使用してこれを改善:

datetime = Ecto.DateTime.utc(:usec) 

datetime 
|> Ecto.DateTime.to_erl 
|> :calendar.datetime_to_gregorian_seconds 
|> Kernel.-(62167219200) 
|> Kernel.*(1000000) 
|> Kernel.+(datetime.usec) 
|> div(1000) 
|> IO.inspect 

出力:

1472105945416 

ます。また、何のパフォーマンスヒットがありませんように、おそらくモジュールの属性に格納、:calendar.datetime_to_gregorian_seconds({{1970, 1, 1}, {0, 0, 0}})とその一定の値を置換すること、どのようにtimex doesのように。

関連する問題