C# 当从客户端向服务器发送数据时,UTC Datetime对象默认为本地时区(都在UTC时区之外)

C# 当从客户端向服务器发送数据时,UTC Datetime对象默认为本地时区(都在UTC时区之外),c#,asp.net,.net,datetime,datetime-format,C#,Asp.net,.net,Datetime,Datetime Format,我在客户机-服务器体系结构中工作。我的客户端和服务器都位于Utc时区之外 我以Utc格式将Datetime对象从客户端发送到服务器。只要我的Datetime对象进入我的服务器,它就默认为本地时区。我可以通过调用ToUniversalTime()方法将我的Datetime对象转换回Utc时区,但是有没有办法告诉服务器没有将Datetime对象默认为其本地时区?我想您正在寻找: dt = DateTime.SpecifyKind(dt, DateTimeKind.Utc); 但是很难说清楚,因为您

我在客户机-服务器体系结构中工作。我的客户端和服务器都位于Utc时区之外


我以Utc格式将Datetime对象从客户端发送到服务器。只要我的Datetime对象进入我的服务器,它就默认为本地时区。我可以通过调用ToUniversalTime()方法将我的Datetime对象转换回Utc时区,但是有没有办法告诉服务器没有将Datetime对象默认为其本地时区?

我想您正在寻找:

dt = DateTime.SpecifyKind(dt, DateTimeKind.Utc);
但是很难说清楚,因为您的问题中没有显示任何代码。

解析字符串时使用。或
datetimestyle.RoundtripKind


(或者根本不要使用
DateTime
;切换到
DateTimeOffset

看到这个好消息,有一条评论说,为了创建日期或更新日期,使用UTC时间,然后我们可以将其转换为用户的时区来显示。但我的问题是,当UTC时间从客户端到服务器或服务器到客户端进入时,它默认为本地时区。从线程来看,我认为他们建议使用DateTimeOffset。我的理解是否正确?我不确定我是否完全理解-您能否发布您的代码和/或提供更多详细信息-例如数据发送/使用的确切方式?你的目标是“时间戳”一些“事件”?基本上我们有一个服务器(Asp.net网站)托管在IIS下。然后,我们的客户端(asp.net网站)在IIS下托管在不同时区的不同机器上。他们都通过黑森逻辑相互交流。若服务器以UTC格式发送日期,则自动默认为本地时间。这是DateTime。Kind属性已更改为Local。例如:服务器发送UTC时间2013年10月10日下午4:15:56,而客户端将其视为本地时间2013年10月10日下午4:15:56。因为这是客户端和服务器之间的消息传递,所以我不可能向您展示代码。但这些都是简单的datetime对象,问题不在服务器端。是jsonserializer造成了问题。我总是给Json序列化程序一个UTC日期时间,但它总是通过保持日期和时间与UTC相同来将时区更改为本地。请参阅我对问题的评论,以了解更多信息。实际上,我不认为代码会有什么不同。请阅读我对这个问题的评论,以便更清楚地理解。通过将UTC日期时间更改为字符串,然后告诉我的javascript该字符串是UTC时间,我成功地实现了预期的结果。我将很快发布我的完整答案。你的评论没有提供更多的明确性。我从来没有听说过“Hessian Logic”,你说另一个客户端是web服务器,但这里你说的是javascript,它必须在web浏览器中运行。对不起,我现在不知道你在说什么。