Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Breeze 微风中的UTC/时区_Breeze_Utc - Fatal编程技术网

Breeze 微风中的UTC/时区

Breeze 微风中的UTC/时区,breeze,utc,Breeze,Utc,我正在与Breeze合作,遇到了一些日期/时间问题 我在表单中有一个字段,带有日期时间选择器,返回值为07/20/2018 14:00。对于这个例子,假设我在CST时区(GMT-0500)。我想做的是将该值传递给我的Breeze实体管理器,并将其正确保存在数据库中。我将日期输入一个变量: dateVariable = ctx.ChosenTime; 这起作用,并将值07/20/2018 14:00放入变量dateVariable中 我创建了一个新实体: var newEntity = ent

我正在与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(),然后返回返回值,它将显示为2018年7月20日19:00。由于Breeze正在处理显示值(通过数据绑定),我不确定为什么会发生这种情况。如有任何建议,将不胜感激。感谢

当JSON响应来自服务器时,如果日期字符串没有时区说明符,Breeze会假定它是UTC格式的,并在解析之前在末尾加上一个“Z”。因此,在往返服务器之后,它会将本地时间转换为UTC。解决办法是:

  • 将服务器端属性更改为
    DateTimeOffset
    或保留日期时区的类似数据类型。这样,返回的日期将有一个时区

  • 告诉Breeze不要添加“Z”,只需在当地时间解释日期即可。有关更多信息,请参阅


  • 服务器上保存了什么值?如果您查看浏览器F12开发工具的“网络”选项卡,那么
    SaveChanges()
    发送的值是多少,以及从服务器返回的值是多少?“2018-07-20T16:00:00.000Z”是我在位于CST的服务器上选择1100(或上午11:00)时发送的值,因此这似乎是正确的。当我取回它时,它被发送为“2018-07-20T16:00:00.000”。响应的末尾没有Z,因此它被解释为本地时间?这里是奇怪的部分,当我在breeze中执行查询以将其拉出时,我返回的原始数据是10个小时(“2018年7月20日星期五21:00:00 GMT”),这是一个很好的答案,非常有用。这让我更加思考我的系统应该如何处理时区。我希望Breeze(和MVC5)按照如下方式处理:如果阿拉斯加的用户输入的时间是晚上7:00,那么当纽约的用户加载相同的数据时,他们应该看到晚上7:00。