我有一个脚本,用于存储用户执行的操作。这是一个包含日期时间的列,最初我是用户NOW(),但它使用服务器时间,与用户的实际时间相比,这是一个小时的休息时间。
所以我决定使用JS可以获得的时间。我用这种方式格式化了它:
var now = new Date(),
isnow = now.getFullYear() + '-' + ('0' + (now.getMonth() + 1)).slice(-2) + '-' + ('0' + now.getDate()).slice(-2) + ' ' + ('0' + (now.getHours() + 1)).slice(-2) + ':' + ('0' + now.getMinutes()).slice(-2) + ':' + ('0' + now.getSeconds()).slice(-2);
我已经过测试,虽然格式运行正常但时间已经过了一个小时。是因为夏令时吗?如何获取用户的实际当地时间?
答案 0 :(得分:2)
在您的代码中写道:
...('0' + (now.getHours() + 1)).slice(-2)...
尝试删除此加一
其他您可以通过以下方式检查日节省时间:
if (now.dst()) { alert ("Daylight savings time!"); }
Date.prototype.stdTimezoneOffset = function() {
var jan = new Date(this.getFullYear(), 0, 1);
var jul = new Date(this.getFullYear(), 6, 1);
return Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset());
}
Date.prototype.dst = function() {
return this.getTimezoneOffset() < this.stdTimezoneOffset();
}
答案 1 :(得分:0)
您应该使用toISOString()
方法将Date
对象转换为ISO-8601标准格式:
now.toISOString();
ISO-8601日期格式将时间信息放入通用表单中,其中包含可选的时区信息(可能是您的问题的来源)。