我正在使用 globalize 来格式化每个语言环境的日期时间。
var Globalize = require('globalize');
var formatter = Globalize('en-US').dateFormatter();
formatter(new Date());
它很好用,但我想知道是否可以为特定时区格式化日期。这样,它总是在本地机器时区格式化日期。例如,假设我的机器时区是 PST。我可以使用 globalize 在 EST 中格式化日期吗?
我正在使用 globalize 来格式化每个语言环境的日期时间。
var Globalize = require('globalize');
var formatter = Globalize('en-US').dateFormatter();
formatter(new Date());
它很好用,但我想知道是否可以为特定时区格式化日期。这样,它总是在本地机器时区格式化日期。例如,假设我的机器时区是 PST。我可以使用 globalize 在 EST 中格式化日期吗?
从这里偷来的
该解决方案通过使用getTimeOffset()(返回 UTC 时间和本地时间之间的时间差,以分钟为单位)函数来查找给定位置的 UTC 时间偏移并将其更改为毫秒,然后从 UTC 执行计算以返回不同时区的时间。
/**
* function to calculate local time
* in a different city
* given the city's UTC offset
*/
function calcTime(city, offset) {
// create Date object for current location
var d = new Date();
// convert to msec
// add local time zone offset
// get UTC time in msec
var utc = d.getTime() + (d.getTimezoneOffset() * 60000);
// create new Date object for different city
// using supplied offset
var nd = new Date(utc + (3600000*offset));
// return time as a string
return "The local time in " + city + " is " + nd.toLocaleString();
}
此解决方案可行,但以分钟表示时区并调整 UTC 分钟更简单。
请让我知道这是否适合您!
javascript 函数new date()
根据调用函数时的机器时间生成日期/时间戳。因此,如果该函数由位于阿拉斯加的机器调用,它将根据当时阿拉斯加的当前时间生成日期/时间戳。
w3school.com 对大多数与编码相关的项目都有很好的参考。您可以在此处找到问题的答案。