自定义JSON.stringify返回的Date格式

2015-12-10 18:48:13

默认情况下JS的JSON.stringify会将对象内的Date类型的属性按照ISO时间格式解析,得到的内容类似于

{"d":"2015-12-10T10:40:50.835Z"}

但是这种时间的格式在非JS运行环境下解析起来是非常费劲的,关于这件事情,Android和iOS的开发跟我抱怨了很久

后来,在stackoverflow上看到了
http://stackoverflow.com/questions/31096130/how-to-json-stringify-a-javascript-date-and-preserve-timezone

发现可以通过重载Date的toJSON方法实现自定义时间格式,于是接下来只要在程序初始化时使用

Date.prototype.toJSON = function (){
  return this.toLocaleString();
}

覆盖掉原先的toJSON方法,就能够得到

{"d":"2015-12-10 18:40:50"}

这种无论是任何平台都能够正确解析的时间格式了。

不过要注意服务器的时区设置,否则会得到奇怪的时间结果