1

我正在将数据对象转换为 JSON 并使用JSON.stringifyand返回JSON.parse

这在所有设备上都很好用,但在三星 Galaxy SII上适用于该线路:

console.log(jsonObj.gebDat+"::"+new Date(jsonObj.gebDat));

我得到输出:

1973-07-01T10:49:25.134Z::无效日期

我在这个答案中完全实现了这个,它适用于大多数设备,我做错了什么吗?

更新

澄清问题。我创建了一个字符串调用

var stringToSave = JSON.stringify({gebDat: dataclass.gebDat, <here are some more variables>});

然后我保存它。后来,我加载字符串并解析它

var jsonObj = JSON.parse(stringToSave);

然后,我尝试再次设置我的日期(在该行之前调用日志)

console.log(jsonObj.gebDat+"::"+new Date(jsonObj.gebDat));
this.gebDat = new Date(jsonObj.gebDat);

如上所示,日志给了我无效的日期,当我表示它显示的日期NaN.NaN.NaN而不是预期的日期时01.07.1973

4

2 回答 2

1

1.日期字符串格式取决于实现。保存日期时始终建议使用时间戳。

var timestamp = Date.parse( new Date() );//1372675910000

现在您可以使用保存的时间戳稍后重新创建日期

var date = new Date(1372675910000);//Mon Jul 01 2013 16:21:50 GMT+0530 (India Standard Time)

2.对于当前解决方案的简单过渡,以防您不处理不同的时区,

var dateString = jsonObj.getDat.substring(0,23);
var datePart = dateString.split('T')[0].split('-');
var timePart = dateString.split('T')[1].split(/[:.]/);
var DateOj = new Date(datePart[0], datePart[1], datePart[2], timePart[0], timePart[1], timePart[2]);

让我澄清 1,参考您的更新。

var stringToSave = JSON.stringify({gebDat: Date.parse(dataclass.gebDat), <here are some more variables>});

var jsonObj = JSON.parse(stringToSave);

console.log('timestamp :' + jsonObj.gebDat);//1372680083000
console.log(new Date(jsonObj.gebDat));//Mon Jul 01 2013 17:31:23 GMT+0530 (India Standard Time)
于 2013-07-01T11:03:24.300 回答
0

您需要发送字符串并发送回调。

尝试:

console.log(jsonObj.gebDat+"::"+new Date(jsonObj.gebDat()));
于 2021-05-10T18:50:10.630 回答