JS:Bug将字符串转换为Date

时间:2013-07-01 10:43:26

标签: javascript android json samsung-mobile

我正在将数据对象转换为JSON,然后返回JSON.stringifyJSON.parse

这在所有设备上运行良好,但在三星Galaxy SII 的位置:

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

我得到了输出:

  

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

我正在this answer执行此操作,它适用于大多数设备,我做错了吗?

更新

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

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

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

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

试试:

SimpleEmployee