gpt4 book ai didi

c# - Json 序列化更改日期时间

转载 作者:太空宇宙 更新时间:2023-11-03 15:03:51 24 4
gpt4 key购买 nike

我目前正在从 .net MVC5 网站调用 rest api,并使用 AutoRest (0.17.3) 从 rest api swagger.json 生成代码。

一切正常,但当我使用 put 方法时,它会将其中一个字段的日期时间更改一个小时。我在自动生成的代码中找到了导致问题的位置:

   _requestContent = Microsoft.Rest.Serialization.SafeJsonConvert.SerializeObject(value, this.SerializationSettings);

好像是在把对象序列化成Json的时候改时间。

我已经在 web.config 中设置了文化,但我们仍然遇到同样的问题。

有谁知道如何解决这个问题?如果可能在全局范围内,那么我们不必更改自动生成的代码。否则我们每次重新生成代码时都必须记住进行此更改。

非常感谢

安迪

最佳答案

我相信您的数据时间值指定为本地时间(具有属性 Kind 等于 DateTimeKind.Local)。这就是为什么这个值随着时间的变化而序列化的原因。如果将此属性更改为 DateTimeKind.Utc,数据值将在不更改的情况下进行序列化。参见示例:

var local = DateTime.Now;
var utc = DateTime.SpecifyKind(local, DateTimeKind.Utc);

var _requestContentLocal = Microsoft.Rest.Serialization.SafeJsonConvert.SerializeObject(local);
var _requestContentUTC = Microsoft.Rest.Serialization.SafeJsonConvert.SerializeObject(utc);

_requestContentLocal "\"2017-06-29T18:19:32.6704837+03:00\""
_requestContentUTC "\"2017-06-29T18:19:32.6704837Z\""

关于c# - Json 序列化更改日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44764567/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com