我正在使用 JavaScript 的 Date
类,并尝试使用 getDate()
方法获取当前日期。但显然它正在加载系统日期和时间。我正在印度运行代码,但我想使用相同的方法获取英国的日期和时间。我该怎么做?
我正在使用 JavaScript 的 Date
类,并尝试使用 getDate()
方法获取当前日期。但显然它正在加载系统日期和时间。我正在印度运行代码,但我想使用相同的方法获取英国的日期和时间。我该怎么做?
如果您知道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'));
参考来源: 使用JavaScript将本地时间转换为其他时区
utc
相关的代码有误。d.getTime()
已经是以 UTC 毫秒为单位的时间了。然而,你需要使用 .toUTCString()
而不是 toLocaleString()
! - Bergi您可以使用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以外的时区并非必需品,因此在尝试
这些代码块时,请考虑到它可能失败的情况,并尝试找到替代方案,例如从服务器获取时区偏移量。
一种方法是使用 getLocaleString,就像这样:
创建一个日期对象:
date = new Date(0)
如果您在柏林,这应该转换为此字符串:
Thu Jan 01 1970 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。'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());
}
Date.getTimezoneOffset()
getTimezoneOffset() 方法返回格林威治标准时间 (GMT) 和本地时间之间的时间差,以分钟为单位。
例如,如果您所在的时区是 GMT+2,则将返回 -120。
注意:此方法始终与 Date 对象一起使用。
var d = new Date()
var gmtHours = -d.getTimezoneOffset()/60;
document.write("The local time zone is: GMT " + gmtHours);
//output:The local time zone is: GMT 11
.getTimezoneOffset()
方法应该可以使用。这将获取您所在时区与 GMT 之间的时间差。然后您可以根据需要进行计算。
客户端的简短回答是:不行,你必须从服务器端获取它。