我需要在我的 Web 应用程序中将时间转换为“UTC+03:30 时区”,这里是 UTC 日期:
DateTime dt = DateTime.UtcNow;
是否有将UTC转换为我的时区的功能?如果ASP.NET中有此功能,我不想在应用程序中编写新函数。
该应用程序可能托管在世界上不同的服务器上,这正是我使用UTC日期的原因。
我需要一个函数来将当前UTC时间加上3:30。
我需要在我的 Web 应用程序中将时间转换为“UTC+03:30 时区”,这里是 UTC 日期:
DateTime dt = DateTime.UtcNow;
是否有将UTC转换为我的时区的功能?如果ASP.NET中有此功能,我不想在应用程序中编写新函数。
该应用程序可能托管在世界上不同的服务器上,这正是我使用UTC日期的原因。
我需要一个函数来将当前UTC时间加上3:30。
你确定你的时区是真的 UTC +3:30,没有夏令时吗?如果是这样,你可以创建一个带有适当偏移量(3.5小时)的 DateTimeOffset
。例如:
DateTimeOffset dtOffset = new DateTimeOffset(DateTime.UtcNow,
TimeSpan.FromHours(3.5));
DateTimeOffset
而不是DateTime
……你能使用它吗?TimeZoneInfo
——例如,你可以获取正确的时区并调用DateTime local = TimeZoneInfo.ConvertTimeFromUtc(utcDateTime, tzInfo);
...或者您可以使用TimeZoneInfo
,但仍然会得到DateTimeOffset
:
DateTimeOffset dto = TimeZoneInfo.ConvertTime(DateTimeOffset.UtcNow, tzInfo);
个人建议您使用DateTimeOffset
,因为DateTime
的含义有些模糊且难以正确处理。
.NET的日期和时间处理有点混乱,不幸的是:(我有一个名为Noda Time的项目,如果我们完成它,应该会改善现状,但目前还远未准备好投入生产。
dtoffset.DateTime
:) DateTimeOffset的问题在于,在System.ServiceModel.Syndication
之外,BCL的其他部分似乎都没有使用它(类似于几乎没有使用System.Uri
,而通常期望字符串。) - Michael Stum这将让您将UTC转换为任何时区
Shared Function FromUTC(ByVal d As Date, ByVal tz As String) As Date
Return (TimeZoneInfo.ConvertTimeBySystemTimeZoneId(d, TimeZoneInfo.Utc.Id, tz))
end function
您可以使用以下代码获取时区列表:
For Each timeZone As TimeZoneInfo In tzCollection
Console.WriteLine(" {0}: {1}", timeZone.Id, timeZone.DisplayName)
Next