rata死于unix时间
rata die to unix time
我正在尝试将 Date.Date
从 justinmimbs/date
包转换为 Time.Posix
从 elm/time
或自 UNIX 纪元以来的毫秒整数。
我目前的方法如下,但似乎效果不佳。
dateToPosixTime : Date.Date -> Time.Posix
dateToPosixTime date =
Time.millisToPosix (Date.toRataDie date - 719162 * (1000 * 60 * 60 * 24))
(719162是1970年1月1日到0001年1月1日的偏移量)
这似乎有效,但它不再给我工作结果
另一种方法:
dateToPosixTime : Date.Date -> Time.Posix
dateToPosixTime date =
Time.millisToPosix ((Date.toRataDie date - epochStartOffset) * (1001 * 60 * 60 * 24) - (1000 * 60 * 60 * 24))
好的,基本上我描述的第二种方法是有效的,如果你不小心写了 1001 * 60 * 60 * 24
而不是正确的 1000 * 60 * 60 * 24
,因为一秒只有 1000 毫秒,而不是 1001.
因此工作代码是:
epochStartOffset : Int
epochStartOffset =
719162
dateToPosixTime : Date.Date -> Time.Posix
dateToPosixTime date =
Time.millisToPosix ((Date.toRataDie date - epochStartOffset) * (1000 * 60 * 60 * 24) - (1000 * 60 * 60 * 24))
如果您希望明确您正在使用的日期(UTC?纽约?尼泊尔?),justinmimbs/time-extra has a convenient partsToPosix
function,可以轻松创建具有签名 Zone -> Date -> Posix
的明确函数
midnightOfDate : Zone -> Date -> Posix
midnightOfDate zone date =
TE.partsToPosix zone
{ year = Date.year date
, month = Date.month date
, day = Date.day date
, hour = 0
, minute = 0
, second = 0
, millisecond = 0
}
在 Elm 回复上:
> Date.fromRataDie 719163 |> Date.toIsoString
"1970-01-01" : String
> midnightOfDate Time.utc (Date.fromRataDie 719163)
Posix 0 : Time.Posix
我正在尝试将 Date.Date
从 justinmimbs/date
包转换为 Time.Posix
从 elm/time
或自 UNIX 纪元以来的毫秒整数。
我目前的方法如下,但似乎效果不佳。
dateToPosixTime : Date.Date -> Time.Posix
dateToPosixTime date =
Time.millisToPosix (Date.toRataDie date - 719162 * (1000 * 60 * 60 * 24))
(719162是1970年1月1日到0001年1月1日的偏移量)
这似乎有效,但它不再给我工作结果
另一种方法:
dateToPosixTime : Date.Date -> Time.Posix
dateToPosixTime date =
Time.millisToPosix ((Date.toRataDie date - epochStartOffset) * (1001 * 60 * 60 * 24) - (1000 * 60 * 60 * 24))
好的,基本上我描述的第二种方法是有效的,如果你不小心写了 1001 * 60 * 60 * 24
而不是正确的 1000 * 60 * 60 * 24
,因为一秒只有 1000 毫秒,而不是 1001.
因此工作代码是:
epochStartOffset : Int
epochStartOffset =
719162
dateToPosixTime : Date.Date -> Time.Posix
dateToPosixTime date =
Time.millisToPosix ((Date.toRataDie date - epochStartOffset) * (1000 * 60 * 60 * 24) - (1000 * 60 * 60 * 24))
如果您希望明确您正在使用的日期(UTC?纽约?尼泊尔?),justinmimbs/time-extra has a convenient partsToPosix
function,可以轻松创建具有签名 Zone -> Date -> Posix
midnightOfDate : Zone -> Date -> Posix
midnightOfDate zone date =
TE.partsToPosix zone
{ year = Date.year date
, month = Date.month date
, day = Date.day date
, hour = 0
, minute = 0
, second = 0
, millisecond = 0
}
在 Elm 回复上:
> Date.fromRataDie 719163 |> Date.toIsoString
"1970-01-01" : String
> midnightOfDate Time.utc (Date.fromRataDie 719163)
Posix 0 : Time.Posix