0

我有一个带有日期时间对象的实体。数据库时间是2012-05-07 00:00:00.000,并且来自微风 web api 调用的数据即将到来2012-05-07T00:00:00.000,但保存数据的属性是Sun May 06 2012 20:00:00 GMT-0400 (Eastern Daylight Time)。注意 4 小时的差异。

据此:_

[T]服务器上的值的时区将被转移到客户端上的值(反之亦然)。

听起来 Breeze 将日期时间视为 UTC 并将其转换为 EDT。Breeze 这样做是基于原始日期缺少时区信息吗?对于这个特定的实例,我不关心时区,无论客户端/服务器时区如何,我如何从数据库中获取实际日期?

4

1 回答 1

2

如果未提供,您可以替换 Breeze 的 DataType.parseDateFromServer 以不推断任何时区信息:

breeze.DataType.parseDateFromServer = function (source) {
     return new Date(Date.parse(source));
};

但是,您可能会遇到另一个问题。不同的浏览器以不同的方式解释没有时区偏移的 DateTime 字符串......因此,根据浏览器的不同,您仍然可能会得到奇怪的结果。如果发生这种情况,您将需要在上面的代码段中添加一些浏览器检测代码。

编辑:还提出了建议,如果您使用 Moment.js,您可以执行以下操作

breeze.DataType.parseDateFromServer = function (source) {
     var date = moment(source); 
     return date.toDate();   
};
于 2013-05-27T08:50:40.390 回答