Json.Stringify弄乱了我的日期对象

时间:2016-12-08 18:07:53

标签: javascript html json datetime time

我有这个变量' previousDate'并将其分配到上一个日期。

var previousDate;

当我执行console.log(previousDate)时,我在控制台上获得此值。

Wed Dec 07 2016 10:02:37 GMT-0800 (Pacific Standard Time)

现在,当我json.stringify这个数据时,我得到了以下日期和时间。

2016-12-07T18:02:37.223Z

日期相同,但请注意这里的时间。而不是PST,它向我展示了GMT。我需要在这里进行PST定时。有什么建议吗?

3 个答案:

答案 0 :(得分:2)

创建对象时,请创建一个返回日期字符串的方法 样品:

var obj = { d1: (new Date()), d1String: function() { return this.d1.toString(); } }

或者将YourDate.toString()保存在对象的一个​​属性中。

var objDate = { dateString: YourDate.toString() ;}

或者

var ff = function(YourObject) {  var OBJ = {} ;
for(x in YourObject)
{
   if (typeof(YourObject[x]) !== "function")
       eval("OBJ." + x + " = '" + YourObject[x] + "'");
    else
      eval("OBJ." + x + " = '" + YourObject[x]() + "'");
}
var strOBJ = JSON.stringify(OBJ);
return strOBJ;
}

我在GitHub上的要点

https://gist.github.com/kiaratto/afb6bb9acd21d0dda37157eb3a92ec2f

答案 1 :(得分:1)

JavaScript日期值不包含时区信息。

当您将某些内容记录到控制台时,浏览器会尽力向您显示相关且有用的信息。对于日期,这通常意味着存储在其中的任何UTC值都显示在您当地的时区中,您必须为“GMT-0800(太平洋标准时间)”。

如果要以UTC显示时间,可以写:

console.log(date.toUTCString())

这是JSON.stringify正在做的事情;使用UTC传输日期有助于在信息必须跨越各个时区时简化操作。

然而,这种行为似乎并不是你想要的。如果您希望在发送时将字符串设置为local-timezone,则可以写:

console.log(date.toString())

答案 2 :(得分:1)

看起来你可以得到你想要的东西,如果你这样做:

date.toDateString() + ' ' + date.toTimeString()