0

我在服务器上定义了一个投影(IQerable - 匿名类型)。匿名类型包含 DateTime 属性,这些属性不会在客户端反序列化,而是保留为字符串。

如何以与微风通常相同的方式轻松地将它们转换为 JS DateTime 对象?

我有默认的 WebApi 配置。

4

2 回答 2

1

如果您需要手动反序列化它们,那么我发现的最好的库是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 字符串(事实上,这是它的首选字符串格式)。

于 2013-04-30T17:07:07.933 回答
0

我最终使用了breeze.DataType.parseDateFromServer(dateString);- 不知道这是否是最佳的,但它与默认的 WebApi 配置一起正常工作。Moment 在字符串末尾需要“Z”来将日期解析为 UTC。相反,Breeze 将没有时区信息的日期视为 UTC。

于 2013-05-01T00:25:47.750 回答