我有一段JSON:
\/Date(1293034567877)\/
Run Code Online (Sandbox Code Playgroud)
这是.NET代码的结果:
var obj = DateTime.Now;
var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
serializer.Serialize(obj).Dump();
Run Code Online (Sandbox Code Playgroud)
现在我面临的问题是如何在JavaScript中创建一个Date对象.我所能找到的是令人难以置信的正则表达式解决方案(许多包含错误).
很难相信没有优雅的解决方案,因为这完全在JavaScrip中,我的意思是JavaScript代码试图读取JSON(JavaScript Object Notation),这应该是一个JavaScript代码,而且此时它证明它不是因为JavaScript不能在这做得很好
我也看到了一些我无法工作的eval解决方案(除了被指出为安全威胁).
难道没有办法优雅地做到这一点吗?
类似的问题没有真正的答案:
如何使用GWT解析ASP.NET JSON日期格式
我有一个由用户创建的日期对象,浏览器填充时区,如下所示:
var date = new Date(2011, 05, 07, 04, 0, 0);
> Tue Jun 07 2011 04:00:00 GMT+1000 (E. Australia Standard Time)
Run Code Online (Sandbox Code Playgroud)
但是当我对它进行字符串化时,时区就会再见
JSON.stringify(date);
> "2011-06-06T18:00:00.000Z"
Run Code Online (Sandbox Code Playgroud)
在保留浏览器时区的同时获得ISO8601字符串的最好方法是使用moment.js并使用moment.format(),但当然如果我通过JSON.stringify内部使用的东西序列化整个命令(在这种情况下,AngularJS),这将无法工作)
var command = { time: date, contents: 'foo' };
$http.post('/Notes/Add', command);
Run Code Online (Sandbox Code Playgroud)
为了完整起见,我的域确实需要本地时间和偏移量.