【发布时间】:2017-07-08 03:17:48
【问题描述】:
给定输入
1) 日期时间:日月年小时和分钟
2) 时区
如何在 UTC 中创建特定时区或日期的 Javascript 日期对象?
还有如何将此日期时间转换为任何其他时区。
是否有任何 Angular 包可以做到这一点。
【问题讨论】:
标签: javascript angular timezone
给定输入
1) 日期时间:日月年小时和分钟
2) 时区
如何在 UTC 中创建特定时区或日期的 Javascript 日期对象?
还有如何将此日期时间转换为任何其他时区。
是否有任何 Angular 包可以做到这一点。
【问题讨论】:
标签: javascript angular timezone
所以我这样做:
var offset = -5.0; // my servers UTC offset
var clientDate = new Date();
var utc = clientDate.getTime() + (clientDate.getTimezoneOffset() * 60000);
var serverDate = new Date(utc + (3600000 * offset));
var c = $.datepicker.formatDate('mm/dd/yy', serverDate);
在最后一行,我使用 jQuery(通常称为 BootStrap)日期选择器为我设置日期格式。
这里的关键是offset,它是与 UTC 时间的小时偏移量。
在 Angular 中你可以使用 dateFilter
new Date(dateFilter(minDate, 'yyyy-MM-dd\'T\'00:00:00', timezone));
【讨论】:
.getTime() 返回的时间戳已经采用 UTC。通过使用客户端的当前偏移量对其进行调整,您只是选择了一个不同的时间点。当您尝试将服务器的偏移量添加为Date 构造函数的输入时,情况相同。通过以这种方式移动偏移量,无法让Date 对象表示不同的时区。它仍然会根据运行它的机器的本地时间来格式化输出,包括该时区的 DST 更改。
.getUTCFullYear() 等)才可接受。任何使用本地时间函数 (日期选择器的日期格式化程序正在执行的操作)将在 DST 转换周围遇到错误。