我在字符串中使用javascript创建新数据时遇到了一个非常奇怪的错误。
我的字符串看起来像2015-12-04T01:42:13
代码如下
date = new Date(2015-12-04T01:42:13)
console.log(date);
console.log的结果是2015-12-04T02:42:13
,但为什么呢?我现在UTC在我的时区是+1。但我将数值从数据库中取出并将其与实际日期进行比较,以查看已经过了多长时间。我不希望它被纠正,因为它已经在这个时区获得了。为什么会这样?逻辑是什么?
如何从字符串创建确切的日期?
这实际上似乎是node.js的一个问题。我无法在任何地方重复它。
答案 0 :(得分:-1)
感谢@zerkms,我找到了一种方法来获取数据。我写了2个函数来确保数据以正确的方式保存在数据库中。它以下列格式向我发送字符串:YYYY-MM-DDTHH:MM:SS + GMT(2015-12-05T13:11:59 + 01:00)。可以使用'new Date(“2015-12-05T13:11:59 + 01:00”)'
正确解释此字符串var helper = new function(){
//getting the timezone in correct format
this.getTimeZone = function(){
var offset = new Date().getTimezoneOffset(), o = Math.abs(offset);
return (offset < 0 ? "+" : "-") + ("00" + Math.floor(o / 60)).slice(-2) + ":" + ("00" + (o % 60)).slice(-2);
}
this.dateString = function(date){
var year = date.getFullYear();
month = date.getMonth() + 1; // months are zero indexed
month = ("0" + month).slice(-2);
day = date.getDate();
day = ("0" + day).slice(-2);
hour = date.getHours();
hour = ("0" + hour).slice(-2);
minute = date.getMinutes();
minute = ("0" + minute).slice(-2);
second = date.getSeconds();
second = ("0" + second).slice(-2);
timezone = helper.getTimeZone();
return year + "-" + month + "-" + day + "T" + hour + ":" +
minute + ":" + second + timezone;
}
}