我在服务器上定义了一个投影(IQerable - 匿名类型)。匿名类型包含 DateTime 属性,这些属性不会在客户端反序列化,而是保留为字符串。
如何以与微风通常相同的方式轻松地将它们转换为 JS DateTime 对象?
我有默认的 WebApi 配置。
我在服务器上定义了一个投影(IQerable - 匿名类型)。匿名类型包含 DateTime 属性,这些属性不会在客户端反序列化,而是保留为字符串。
如何以与微风通常相同的方式轻松地将它们转换为 JS DateTime 对象?
我有默认的 WebApi 配置。
如果您需要手动反序列化它们,那么我发现的最好的库是moment.js
它应该很简单:var m = moment("DATE_AS_STRING_HERE");
然后您可以通过调用获取本机 JS 日期m.toDate();
Moment 可以处理许多开箱即用的字符串日期格式,我发现它可以很好地与 WebApi 配合使用。
更新:
从文档:
The following ISO-8601 formats are supported across all browsers.
"YYYY-MM-DD"
"YYYY-MM-DDTHH"
"YYYY-MM-DD HH"
"YYYY-MM-DDTHH:mm"
"YYYY-MM-DD HH:mm"
"YYYY-MM-DDTHH:mm:ss"
"YYYY-MM-DD HH:mm:ss"
"YYYY-MM-DDTHH:mm:ss.SSS"
"YYYY-MM-DD HH:mm:ss.SSS"
"YYYY-MM-DDTHH:mm:ss Z"
"YYYY-MM-DD HH:mm:ss Z"
Note: Automatic cross browser ISO-8601 support was added in version 1.5.0
和:
Moment.js 确实会检测您是否使用 ISO-8601 字符串,并且会在没有格式字符串的情况下正确解析它。
所以看起来是的,它应该很好地解析 ISO-8601 字符串(事实上,这是它的首选字符串格式)。
我最终使用了breeze.DataType.parseDateFromServer(dateString);
- 不知道这是否是最佳的,但它与默认的 WebApi 配置一起正常工作。Moment 在字符串末尾需要“Z”来将日期解析为 UTC。相反,Breeze 将没有时区信息的日期视为 UTC。