我正在与Breeze合作,并遇到一些日期/时间问题。
我在表单中有一个带有日期时间选择器的字段,该字段返回的值是07/20/2018 14:00。对于此示例,假设我处于CST时区(GMT -0500)。我想做的就是将该值传递给我的Breeze实体管理器,并将其正确保存在数据库中。我将日期放入变量:
dateVariable = ctx.ChosenTime;
这有效,并将值07/20/2018 14:00放入变量dateVariable。
我创建一个新实体:
var newEntity = entityManager.createEntity('Test Entity', {Date: dateVariable};
当我调试并检查newEntity的值时,它具有名为Date的属性,具有正确的值。但是,一旦我调用了entityManager.SaveChanges(),然后取回了返回值,它将显示为07/20/2018 19:00。由于Breeze正在处理显示值(通过数据绑定),所以我不确定为什么会这样。任何意见,将不胜感激。谢谢
答案 0 :(得分:0)
当JSON响应来自服务器时,如果日期字符串没有时区说明符,则Breeze假定它位于UTC中,并在解析之前在末尾加上“ Z”。因此,它将往返服务器后的本地时间转换为UTC。解决方案是:
将您的服务器端属性更改为DateTimeOffset
或保留日期时区的类似数据类型。这样,返回的日期将具有时区。
告诉Breeze不要添加“ Z”,而只是以当地时间解释日期。有关更多信息,请参见this SO answer。