Date.getUTCDate() returns 不同时区的不同结果 - Javascript
Date.getUTCDate() returns different results in different timezones - Javascript
Javascript 的 Date()
对象快把我逼疯了。我正在尝试获取当前的 UTC 日期 (mm/dd/yyyy
)。我需要日期在世界任何地方都相同。因此,为此,我使用了 UTC 方法,例如 (new Date()).getUTCDate())
方法。然而最近,当一个用户投诉时,我发现世界各地返回的值都不一样。
我需要一个明确的方法来根据世界时获取当前日期(不是过去的日期)。
(new Date()).getTime()
对我不起作用,因为它 returns 以毫秒为单位。
我的代码:
function getToday() {
var today = new Date();
var dd = today.getUTCDate();
var mm = today.getUTCMonth() + 1; //January is 0!
var yyyy = today.getUTCFullYear();
if (dd < 10) {
dd = '0' + dd
}
if (mm < 10) {
mm = '0' + mm
}
today = mm + '/' + dd + '/' + yyyy
return today;
}
console.log(getToday());
编辑:
我联系了这个用户,让他基本执行(new Date()).getUTCDate())
。他休息了一天(正确答案是 27)
此外,他的时区偏差是 180
他在 Windows 电脑上使用 Chrome(我不知道是什么版本)
编辑 2:
我刚刚做了一些数学运算,发现了一些奇怪的东西。
我的用户说他每天都在 12:00PM 遇到问题,因为日期改变了。他告诉我他在 9:53PM 时遇到了问题。知道他有 180 分钟的时区偏移,而我有 240 的时区偏移,我可以通过 myTime + offsetDifference
计算出他那一刻的时间。然而,那 (((9*60 + 53) + (240 - 180)) / 60
) 等于大约晚上 11 点。所以,他的 PC 时间必须倒退 1 小时。
他可能手动设置了他的时间,但他的时区错误。
显然,我的用户没有设置他的时区,而是只设置了时钟。如果是这样,正如乔纳森格雷指出的那样,UTC 时间将是错误的,即使时间在本地检查。他已经修复了他的时区并且它成功了。
此外,正如 Phil 指出的那样,如果想要任何可靠的通用标准化时间,就必须使用时间始终正确的可信后端。为此,我还找到了一个名为 World Clock API 的网站。但是,正如我注意到的那样,要获得可靠的服务并保证它会在您的站点启动时启动,您必须将其集成到您的服务器中。一种简单的方法是使用 PHP 的 time() 方法,并计算相对于客户端时间的偏移量。
Javascript 的 Date()
对象快把我逼疯了。我正在尝试获取当前的 UTC 日期 (mm/dd/yyyy
)。我需要日期在世界任何地方都相同。因此,为此,我使用了 UTC 方法,例如 (new Date()).getUTCDate())
方法。然而最近,当一个用户投诉时,我发现世界各地返回的值都不一样。
我需要一个明确的方法来根据世界时获取当前日期(不是过去的日期)。
(new Date()).getTime()
对我不起作用,因为它 returns 以毫秒为单位。
我的代码:
function getToday() {
var today = new Date();
var dd = today.getUTCDate();
var mm = today.getUTCMonth() + 1; //January is 0!
var yyyy = today.getUTCFullYear();
if (dd < 10) {
dd = '0' + dd
}
if (mm < 10) {
mm = '0' + mm
}
today = mm + '/' + dd + '/' + yyyy
return today;
}
console.log(getToday());
编辑:
我联系了这个用户,让他基本执行(new Date()).getUTCDate())
。他休息了一天(正确答案是 27)
此外,他的时区偏差是 180
他在 Windows 电脑上使用 Chrome(我不知道是什么版本)
编辑 2:
我刚刚做了一些数学运算,发现了一些奇怪的东西。
我的用户说他每天都在 12:00PM 遇到问题,因为日期改变了。他告诉我他在 9:53PM 时遇到了问题。知道他有 180 分钟的时区偏移,而我有 240 的时区偏移,我可以通过 myTime + offsetDifference
计算出他那一刻的时间。然而,那 (((9*60 + 53) + (240 - 180)) / 60
) 等于大约晚上 11 点。所以,他的 PC 时间必须倒退 1 小时。
他可能手动设置了他的时间,但他的时区错误。
显然,我的用户没有设置他的时区,而是只设置了时钟。如果是这样,正如乔纳森格雷指出的那样,UTC 时间将是错误的,即使时间在本地检查。他已经修复了他的时区并且它成功了。
此外,正如 Phil 指出的那样,如果想要任何可靠的通用标准化时间,就必须使用时间始终正确的可信后端。为此,我还找到了一个名为 World Clock API 的网站。但是,正如我注意到的那样,要获得可靠的服务并保证它会在您的站点启动时启动,您必须将其集成到您的服务器中。一种简单的方法是使用 PHP 的 time() 方法,并计算相对于客户端时间的偏移量。