我正在使用 JavaScriptDate
类并尝试使用getDate()
方法获取当前日期。但显然它正在加载系统日期和时间。我正在运行来自印度的代码,但我想使用相同的方法获取英国的日期和时间。我怎样才能做到这一点 ?
获取特定时区的时间
IT技术
javascript
date
time
timezone
2021-01-23 05:50:50
6个回答
如果您知道 UTC 偏移量,那么您可以传递它并使用以下函数获取时间:
function calcTime(city, offset) {
// create Date object for current location
var d = new Date();
// convert to msec
// subtract 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 for city"+ city +" is "+ nd.toLocaleString();
}
alert(calcTime('Bombay', '+5.5'));
你可以使用Intl.DateTimeFormat
.
let options = {
timeZone: 'Europe/London',
year: 'numeric',
month: 'numeric',
day: 'numeric',
hour: 'numeric',
minute: 'numeric',
second: 'numeric',
},
formatter = new Intl.DateTimeFormat([], options);
console.log(formatter.format(new Date()));
或者,如果您只格式化一次而不是批量使用Date.prototype.toLocaleDateString()
.
(new Date()).toLocaleString([], options)
不幸的是浏览器不要求了解比UTC其他时区,所以try
这些块,并计算出在情况下,它失败的替代,例如取时区从服务器偏移。
最好的方法是使用 getLocaleString,如下所示:
创建日期对象:
date = new Date(0)
如果你在柏林,这应该转换成这个字符串:
1970 年 1 月 1 日星期四 01:00:00 GMT+0100 (CET)
获取雅典的时间:
date.toLocaleString('de-DE', {hour: '2-digit', hour12: false, timeZone: 'Europe/Athens' })
'02'
获取上海时间:
date.toLocaleString('de-DE', {hour: '2-digit', hour12: false, timeZone: 'Asia/Shanghai' })
'08'
您可以使用getUTCDate()
和相关getUTC...()
方法访问基于 UTC 时间的时间,然后进行转换。
如果你愿意,你可以使用valueOf()
,它返回自 Unix 时代以来的 UTC 秒数,并使用它,但它可能会涉及更多。
这是获得##的正确方法
function getTime(offset)
{
var d = new Date();
localTime = d.getTime();
localOffset = d.getTimezoneOffset() * 60000;
// obtain UTC time in msec
utc = localTime + localOffset;
// create new Date object for different city
// using supplied offset
var nd = new Date(utc + (3600000*offset));
//nd = 3600000 + nd;
utc = new Date(utc);
// return time as a string
$("#local").html(nd.toLocaleString());
$("#utc").html(utc.toLocaleString());
}
其它你可能感兴趣的问题