在erlang中将时间戳转换为日期时间

时间:2009-05-05 14:35:11

标签: date time erlang

如何将时间戳(1970年1月1日以来的毫秒数......)转换为Erlang中的Date或DateTime格式?像{年,月,日}这样的东西。

3 个答案:

答案 0 :(得分:19)

大致是:

msToDate(Milliseconds) ->
   BaseDate      = calendar:datetime_to_gregorian_seconds({{1970,1,1},{0,0,0}}),
   Seconds       = BaseDate + (Milliseconds div 1000),
   { Date,_Time} = calendar:gregorian_seconds_to_datetime(Seconds),
   Date.

答案 1 :(得分:8)

恰好我有一个带有一堆日期时间实用程序的github gist用于此目的:http://gist.github.com/104903。日历中包含了大部分低级管道。

答案 2 :(得分:0)

OTP 21.0添加了此功能

calendar:system_time_to_universal_time(Time, TimeUnit) -> datetime()

Types
    Time = integer()
    TimeUnit = erlang:time_unit()

Converts a specified system time into universal date and time.

示例:

> os:system_time(1000).   
1598512151718
> calendar:system_time_to_universal_time(1598512151718, 1000).
{{2020,8,27},{7,9,11}}

引用:https://erlang.org/doc/man/calendar.html#system_time_to_universal_time-2