C# .NET WebAPI C中OK()函数中的UTC时区#

C# .NET WebAPI C中OK()函数中的UTC时区#,c#,datetime,asp.net-web-api,utc,C#,Datetime,Asp.net Web Api,Utc,我有一个.NETWebAPI,它以JSON的形式返回一些日期。 我正在使用Ok()函数,它获取C#DateTime列表并将它们转换为JSON数组 我的要求是在任何情况下指定时区(偶数+00:00) 现在,我使用的格式是: jsonSerializerSettings.DateFormatString = "o"; 它使用ISO标准和“Z”来指定UTC 不幸的是,我的web应用程序不理解这样的约定(我的意思是,最后的“Z”),它要求在任何情况下都存在时区偏移。 换句话说,我想用“+00:00”代

我有一个.NET
WebAPI
,它以
JSON
的形式返回一些日期。 我正在使用
Ok()
函数,它获取C#DateTime列表并将它们转换为JSON数组

我的要求是在任何情况下指定时区(偶数+00:00)

现在,我使用的格式是:

jsonSerializerSettings.DateFormatString = "o";
它使用ISO标准和“Z”来指定UTC

不幸的是,我的web应用程序不理解这样的约定(我的意思是,最后的“Z”),它要求在任何情况下都存在时区偏移。 换句话说,我想用“+00:00”代替“Z”

我如何告诉
WebAPI
使用这种约定

以前我有:

jsonSerializerSettings.DateFormatString = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffzzz";

它没有时区信息。

这并不像人们希望的那么简单-主要是因为
DateTime
类型是

我建议只处理服务器上的UTC日期(即假设任何传入日期为UTC,将所有内容保存为UTC,并在任何地方返回UTC),并让您的客户决定是否需要为此做些什么(例如,转换为本地时间以正确显示)。然后,它可以像设置一样简单

jsonSerializerSettings.DateFormatString = "yyyy-MM-ddTHH:mm:ss.fff+00:00";

i、 e.硬编码那里的
+00:00
,因为你(通过假设)知道它将是UTC。

这并不像人们希望的那么容易-主要是因为
日期时间
类型是

我建议只处理服务器上的UTC日期(即假设任何传入日期为UTC,将所有内容保存为UTC,并在任何地方返回UTC),并让您的客户决定是否需要为此做些什么(例如,转换为本地时间以正确显示)。然后,它可以像设置一样简单

jsonSerializerSettings.DateFormatString = "yyyy-MM-ddTHH:mm:ss.fff+00:00";
i、 e.硬编码那里的
+00:00
,因为您知道(假设)它将是UTC。

在返回语句中使用而不是使用
System.DateTime
(确定)。这将自动将
+00:00
添加到序列化字符串中(+00:00假定为UTC时间点)

对于WebAPI2及更高版本,我不确定以前的版本

这也是其他Web API扩展(如oData)的默认日期/时间格式。

在返回语句中使用而不是使用
System.DateTime
(确定)。这将自动将
+00:00
添加到序列化字符串中(+00:00假定为UTC时间点)

对于WebAPI2及更高版本,我不确定以前的版本

这也是其他Web API扩展(如oData)的默认日期/时间格式