我希望在elm中获得一个表示用户本地日期和时间的日期。我查看了核心Date module以及elm-time包。
elm-time包有ZonedDateTime
,但必须提供TimeZone
值,因此必须提前知道时区。
这个问题的核心是可靠地确定用户的时区。我提出的最好的解决方案是将用户的时区偏移量via javascript作为应用程序标记传递,并且相应地修改UTC日期,这是太天真地被认为不可接受的。
答案 0 :(得分:0)
似乎Date.now
任务将在结果Date
中返回时区信息。但是,我没有找到任何实际允许访问的Date
API函数。
但是,一旦有了Date
,我就可以使用getTimezoneOffset
包中的rluiten/elm-date-extra
函数来计算原始分钟的偏移量。您可以尝试从该偏移量推导出时区。
或者,您可以toString
Date
返回并从中解析出来。它以这样的字符串结尾:<Tue Jul 17 2018 23:45:19 GMT-0700 (PDT)>
。
答案 1 :(得分:0)
Intl API提供了a way to get the user's current timezone:
Intl.DateTimeFormat().resolvedOptions().timeZone
它返回IANA字符串,例如"Australia/Sydney"
或undefined
。