我需要时间来转换“UTC + 03:30时区”在我的web应用程序是在这里UTC日期:如何将UTC日期转换为我的时区?
DateTime dt = DateTime.UtcNow;
是否有任何功能,UTC转换成我的时区或不?如果ASP.NET中有一个函数,我不想让自己在我的应用程序中编写一个新函数。
该应用程序可能托管在世界上的不同服务器上,这正是我使用UTC日期的原因。
我需要一个函数将3:30添加到当前UTC时间。
我需要时间来转换“UTC + 03:30时区”在我的web应用程序是在这里UTC日期:如何将UTC日期转换为我的时区?
DateTime dt = DateTime.UtcNow;
是否有任何功能,UTC转换成我的时区或不?如果ASP.NET中有一个函数,我不想让自己在我的应用程序中编写一个新函数。
该应用程序可能托管在世界上的不同服务器上,这正是我使用UTC日期的原因。
我需要一个函数将3:30添加到当前UTC时间。
您确定您的时区为真的吗 UTC +3:30,所有的时间,没有夏令时?如果是这样,你可以创建一个DateTimeOffset
与适当的偏移量(3.5小时)。例如:
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',而是通常期望字符串。) – 2011-03-09 08:01:53
@Michael:True,但我希望这只是在显示边界 - 在这种情况下,它只需要格式化。不幸的是,我们目前没有足够的信息:( – 2011-03-09 09:14:32
,这将让你转换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
这不是真的C# - 使用VB日期类型,但是它是吗?另外,我不相信* system *时区是OP想要使用。 – 2011-03-09 07:58:56
你会怎么办时dayli ght节省时间会发生? – Axarydax 2011-03-09 07:44:31
我不知道我对夏令时感到困惑保存是否有任何想法? – kamiar3001 2011-03-09 07:54:32
我们不知道你为什么试图使用该时区,所以很难说。 UTC + 3:30有什么特别之处? – 2011-03-09 07:59:48