我从 .Net 服务返回 UTC 日期/时间列表,格式如下:
"2013-07-09 19:48:07 +00:00".
在客户端,我将这些字符串值中的每一个转换为相应的基于 UTC 的时刻,就像这样
var fooUtc = new moment.utc(serverDateTimeString)
在页面上,有一个下拉列表,其中包含用户可以更改的时区列表。这些与时区对象的集合相关联,如下所示:
{
id: "Central Standard Time",
label: "(UTC-06:00) Central Time (US & Canada)",
observesDaylightSavings: true,
baseUtcOffset: {
asHours: -6,
asMinutes: -360,
asText: "-06:00"
}
然后,我显示通过所选时区偏移的每个时刻,如下所示:
fooUtc.local().zone(selectedTimeZone.baseUtcOffset.asMinutes).format()
但是,结果没有考虑夏令时,因为来自 .Net 的时区数据不区分 dst 和非 dst 偏移量。
有没有办法使用 moment.js 或新的 moment-timezone 位来完成这项工作?我认为如果我可以将标准 UTC 偏移名称(例如:“中部标准时间”)映射到给定时区的Olson DB 标识符(例如:“America/Chicago”),这是可能的,但如果有更简单的方法,请让我知道。