使用MomentJs显示日期时间,而无需进行时区转换
Display datetime with MomentJs without timezone conversion
有时,我最终会在网站的前端显示一个日期时间,该日期时间已经调整为特定的时区,我希望无论用户的时区如何,它都完全按原样显示。
例如,假设我有这个日期:
2015-01-22T16:11:36.36-07:00
-07:00 表示它是山区时间,MomentJs 知道这一点,并且会自动为其他时区的用户进行调整。 例如,假设我使用以下代码显示日期时间:
moment('2015-01-22T16:11:36.36-07:00').format('l LT')
中部时间 (-06:00) 的用户将看到时间是下午 5:11,而不是下午 4:11。 如何告诉 MomentJs 不调整用户的时区并按原样显示日期时间?
使用 moment 的utc()
方法删除时区并以世界时间显示所有内容。
moment.utc('2015-01-22T16:11:36.36-07:00').format('l LT')
这将以 UTC 格式显示时间,没有任何时区偏移量。如果要显示以用户/服务器时区记录的时间,则可以在构造时刻实例时解析区域信息,并使其使用解析字符串中记录的时区。
moment.parseZone('2015-01-22T16:11:36.36-07:00').format('l LT');
使用这两种方法中的任何一种,您都应该考虑以某种方式标记时间,以反映时间对应的时区。如果不这样做,可能会给最终用户带来很多困惑。
可以使用 utcOffset 方法手动设置偏移量。
moment().utcOffset(0, true).format()
我创建了一个扩展来显示日期时间,而无需尝试调整到用户的时区:
(function (moment) {
moment.fn.nozone = function () {
var m1 = moment(this);
var offsetInMinutes = m1.utcOffset();
return m1.utc().add(offsetInMinutes, 'm');
};
}(moment));
这样,即使在 JavaScript 模板中,它也很容易重用。
相关文章:
- 混合 ui-sref 和 $state.go 在 Angular ui-router 中进行状态转换
- 时区转换
- 使用用户输入javascript进行权重转换
- 使用MomentJs显示日期时间,而无需进行时区转换
- 将 JavaScript Date 从一个时区转换为另一个时区
- 时区转换器,包括夏令时
- 在一定范围内使用paper.js进行颜色转换
- 使用underscore.js进行对象转换
- d3.js使用exit()和enter()进行减法转换
- javascript时区转换器
- 时区转换层
- 时区转换为基于CST的GMT偏移
- 是否可以像在Javascript对象中那样将整数值存储在localStorage中,并在不进行类型转换的情况下提取它
- 如何将变量放入PhantomJS生成的HTML头中进行PDF转换
- 从时刻时区转换中提取时间(HH:MM)
- 如何使用jQueryUI选项卡进行CSS转换
- 如何在java脚本中进行货币转换
- 将服务器时区转换为本地时间
- 当javascript中的系统首选项和用户首选项不同时,会出现时区转换问题
- 使用WallTime.js进行js时区转换,但得到一个错误