【发布时间】:2016-03-15 02:21:19
【问题描述】:
我正在使用time-1.5.0.1 库。
我得到一个代表纪元秒的值,例如1449590820 等于 2015-12-08 11:07:00 -0500。
使用Data.Time 模块,我希望能够将1449590820 转换为ZonedTime。
我要使用的功能是这样的:
utcToZonedTime :: TimeZone -> UTCTime -> ZonedTime
问题是获取我需要的TimeZone 值。 Data.Time 中的可用函数要么依赖于从环境中获取 TimeZone,要么要求您为 EDT 或 EST 显式构造 TimeZone。
我想避免依赖环境给我一个ZonedTime,因为无法保证代码会在设置为美国东部时间的服务器上运行。所以使用这个功能是不可能的:
utcToLocalZonedTime :: UTCTime -> IO ZonedTime
因此,我可以选择自己构建必要的TimeZone 输入。
但是EDT 的TimeZone 与EST 的TimeZone 不同,所以我需要不同的TimeZone,具体取决于夏令时是否有效。是否有一种简单的方法可以根据UTCTime 的值(即它是否属于夏令时)来生成EDT 或EST 的TimeZone?
我想强调的是,我只想使用纯函数来完成这项工作。
也许我正在寻找 tzinfo library in Ruby 的 Haskell 模拟。
【问题讨论】:
-
因此,您需要传递所需的时区和 UTC 日期时间值,并接收一个设置了时区的值和小时调整为夏令时,基于你经过的区域?
-
@9000 我很高兴能够获得美国东部时区中任何 UTCTime 的夏令时调整的 TimeZone 值。
-
是的,看来我正在寻找 Haskell 中的 tzdata/tzinfo 支持。