Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.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
C#Datetime值在进入服务堆栈api方法时发生变化_C#_Datetime_Serialization_<img Src="//i.stack.imgur.com/WM7S8.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">servicestack - Fatal编程技术网 servicestack,C#,Datetime,Serialization,servicestack" /> servicestack,C#,Datetime,Serialization,servicestack" />

C#Datetime值在进入服务堆栈api方法时发生变化

C#Datetime值在进入服务堆栈api方法时发生变化,c#,datetime,serialization,servicestack,C#,Datetime,Serialization,servicestack,我们正在为web服务使用ServiceStack,但我们注意到请求DTO中的任何DateTime对象都发生了更改。小时数根据服务器的时区偏移量而变化。假设我从东部时间向在山区时区托管ServiceStack api的服务器发送请求,一旦我们的api方法收到请求,它会将日期缩短两个小时 我一直在试图找到如何使用ServiceStack修改datetime值的反序列化以防止这种情况发生,但还没有找到任何优雅的解决方案。我认为通过使ServiceStack.Text.JsConfig.AssumeUt

我们正在为web服务使用ServiceStack,但我们注意到请求DTO中的任何DateTime对象都发生了更改。小时数根据服务器的时区偏移量而变化。假设我从东部时间向在山区时区托管ServiceStack api的服务器发送请求,一旦我们的api方法收到请求,它会将日期缩短两个小时

我一直在试图找到如何使用ServiceStack修改datetime值的反序列化以防止这种情况发生,但还没有找到任何优雅的解决方案。我认为通过使
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或偏移量?一个示例值会很有帮助。