我正在将数据对象转换为JSON,然后返回JSON.stringify
和JSON.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
答案 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