C# 是否可以检查传入日期是否在UTC时间?Web Api

C# 是否可以检查传入日期是否在UTC时间?Web Api,c#,asp.net,asp.net-web-api,C#,Asp.net,Asp.net Web Api,我想确保发送到Asp.net Web Api和从Asp.net Web Api发送的所有日期都是UTC时间 发送部分(来自web api)并不太难,因为我可以控制它,但我不知道当某个第三方发送datetime时该怎么做 我想知道是否有方法验证它?除非时区信息已经包含在协议中或以其他方式限制/指示 这可能意味着UTC有一个“Z”名称,而“本地时间”没有时区。。或者指定了完整时区偏移量。。或者所有时间均以UTC为单位。。或者它可能意味着完全不同的东西 (这就是为什么我几乎完全放弃了DateTimeO

我想确保发送到Asp.net Web Api和从Asp.net Web Api发送的所有日期都是UTC时间

发送部分(来自web api)并不太难,因为我可以控制它,但我不知道当某个第三方发送datetime时该怎么做


我想知道是否有方法验证它?

除非时区信息已经包含在协议中或以其他方式限制/指示

这可能意味着UTC有一个“Z”名称,而“本地时间”没有时区。。或者指定了完整时区偏移量。。或者所有时间均以UTC为单位。。或者它可能意味着完全不同的东西


(这就是为什么我几乎完全放弃了DateTimeOffset的DateTime,并在协议设计中包括一个时区偏移量,无论何时必须从外部传输。)

您可以使用
DateTimeOffset
对象来实现这一点。由于您是API的设计者,我强烈建议您包含此信息。这对其他人很有帮助,如果您使用SQL Server作为DBMS,则可以使用
DATETIMEOFFSET
来确保一致性


如果第三方向您发送
日期时间
或同等信息,除非他们的协议明确规定是UTC,那么,您就不能指望它是UTC,必须猜测或查看协议文档以获得一些提示。

DateTime确实有一个种类属性,您可以使用它来查看时间是否是UTC。问题完全在于协议和传输。“2008-11-20 03:04:55”并没有提及时区或其自身的偏移量。(我也鼓励使用DATETIMEOFFSET,它使用SQL修复协议,但不使用外部Web API。)除非有什么原因您不能,强烈建议您理解进出的一切都是UTC。你的头痛会大大减轻,你会遇到一些超出本文范围的问题question@hubsonbropa我过去只做UTC,但我发现在处理用户(跨时区)时,它丢失了一条重要信息,并且遇到了处理起来非常尴尬的情况(例如,对于那些该死的DST更改)。诚然,虽然时区和偏移量并不完全相同,但我发现处理偏移量的协议(如果适用的话)要比仅使用UTC的协议容易得多。哦,我怎么知道这一点。两种方法都做了很多。我的最终目的是服务器是UTC,客户端(又名用户)尽可能处理本地化问题(当您在英国旅行但在纽约居住并在洛杉矶使用office时,哪一个是正确的?服务器无法自行决定使用哪一个)。@hubsonbropa有时区偏移的时间可以转换为UTC。这没有问题。问题在于使用没有偏移的时间(显式或隐式)。如果我说时间现在是
2013-11-07T13:11:53-08:00
几乎没有歧义-但这不是UTC时间。@hubsonbropa-这不像说“好吧”这个字段是必需的“我不需要做检查,我告诉他们它是必需的”,错误将会发生,UTC可能无法发回。现在我想知道是否应该以某种方式发送时区名称,并告诉他们发送本地时间?