C#Datetime值在进入服务堆栈api方法时发生变化
我们正在为web服务使用ServiceStack,但我们注意到请求DTO中的任何DateTime对象都发生了更改。小时数根据服务器的时区偏移量而变化。假设我从东部时间向在山区时区托管ServiceStack api的服务器发送请求,一旦我们的api方法收到请求,它会将日期缩短两个小时 我一直在试图找到如何使用ServiceStack修改datetime值的反序列化以防止这种情况发生,但还没有找到任何优雅的解决方案。我认为通过使C#Datetime值在进入服务堆栈api方法时发生变化,c#,datetime,serialization,
servicestack,C#,Datetime,Serialization,
servicestack,我们正在为web服务使用ServiceStack,但我们注意到请求DTO中的任何DateTime对象都发生了更改。小时数根据服务器的时区偏移量而变化。假设我从东部时间向在山区时区托管ServiceStack api的服务器发送请求,一旦我们的api方法收到请求,它会将日期缩短两个小时 我一直在试图找到如何使用ServiceStack修改datetime值的反序列化以防止这种情况发生,但还没有找到任何优雅的解决方案。我认为通过使ServiceStack.Text.JsConfig.AssumeUt
ServiceStack.Text.JsConfig.AssumeUtc=true代码>
这会将进入服务器的任何日期时间值视为UTC,而不会使用某种本地值转换为日期时间。这似乎对约会没有什么影响
我曾尝试使用ServiceStack.Text.JsConfig.DeSerializeFn
将字符串更改为datetime,但这样做需要除去datetime勾号信息以外的所有信息
我是不是错过了一些明显的东西?似乎应该有一种更简单的方法来防止这种行为。您可能希望使用以下方法:
JsConfig.AlwaysUseUtc = true;
这是很有帮助的,我需要记住这一点以便以后使用,因为我想在整个代码中切换到开始使用UTC,但同时我必须坚持在没有UTC的情况下发送。我确实做了更改,现在保留了UTC格式的实际时间。我想知道是否有任何方法可以在不转换为UTC的情况下,将datetime与发送的日期保持一致。主要是因为datetime值用于根据返回结果集的日期进行筛选,并且存储在数据库中的日期不是UTC。@user1568610否,它总是按照设计在线路上序列化为UTC,默认情况下将反序列化为本地时间,但是可以通过上面的配置选项保留为UTC。好的,谢谢您的帮助和信息。我将继续使用自定义反序列化,直到我可以更新代码以使用UTC。这些值在网络上是什么样子的?我假设它们是ISO601格式的,但它们是否有尾随Z或偏移量?一个示例值会很有帮助。