我有一个日期(以 UTC 毫秒为单位)显示在页面 (AngularJS 1.4.0) 上,用户希望在东部时间看到它,而不管他们的计算机上设置的时区如何。
我正在使用 date 过滤器,并且来自 documentation我明白了
$filter('date')(date, format, timezone)
Timezone to be used for formatting. It understands UTC/GMT and the continental US time zone abbreviations, but for general use, use a time zone offset, for example,
'+0430'
(4 hours, 30 minutes east of the Greenwich meridian) If not specified, the timezone of the browser will be used.
使用今天的时间戳,如果我使用类似的东西
{{ record.Timestamp |日期:'HH:mm:ss.sss':'EST' }}
它写的时间和我预期的一样,但我想我会在 DST 到来时提前一个小时下类。我还可以指定 'EDT'
它会提前一个小时的时间,但是有没有我可以使用的时区缩写,它只是表示“东部”,并使用日期本身来确定是否使用美国东部时间还是美国东部时间?或者我是否需要检查日期并自己创建一个偏移量:-0500/EST 或 -0400/EDT,具体取决于日期? (看起来 timezone
只能是一个字符串,而不是一个函数,所以这会使我的自动检测变得复杂)。
似乎不太可能有人想要将显示硬编码为 EST 或 EDT - 他们更有可能想要针对 DST 调整的时区。
最佳答案
我会使用 Moment.js和 Moment Timezone对于这种东西以获得正确的日期时间。 AngularJS 中的过滤器只是格式化日期时间对象并在 UI 中显示。
您还可以使用一些现成的指令,例如 Angular-Moment . 它具有各种可用的过滤功能。
关于javascript - 调整夏令时的日期过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42426328/