我需要在我的网络应用程序中将时间转换为"UTC + 03:30时区"这里是UTC日期:
DateTime dt = DateTime.UtcNow;
Run Code Online (Sandbox Code Playgroud)
有没有将UTC转换为我的时区的功能?如果ASP.NET中有一个函数,我不想让自己在我的应用程序中编写一个新函数.
该应用程序可能托管在世界上的不同服务器中,这正是我使用UTC日期的原因.
我需要一个函数将3:30加到当前的UTC时间.
你确定你的时区真的是UTC +3:30,一直没有夏令时吗?如果是这样,您可以DateTimeOffset使用适当的偏移(3.5小时)创建一个.例如:
DateTimeOffset dtOffset = new DateTimeOffset(DateTime.UtcNow,
TimeSpan.FromHours(3.5));
Run Code Online (Sandbox Code Playgroud)
当然,这给你一个DateTimeOffset而不是DateTime......你能使用它吗?
更好的解决方案是使用TimeZoneInfo- 例如,您可以获得正确的时区和呼叫
DateTime local = TimeZoneInfo.ConvertTimeFromUtc(utcDateTime, tzInfo);
Run Code Online (Sandbox Code Playgroud)
...或者你可以使用TimeZoneInfo但仍然得到DateTimeOffset:
DateTimeOffset dto = TimeZoneInfo.ConvertTime(DateTimeOffset.UtcNow, tzInfo);
Run Code Online (Sandbox Code Playgroud)
我个人会建议你使用,DateTimeOffset如果你可以,因为它的含义DateTime有点含糊不清,很难正确使用.
不幸的是,.NET的日期和时间处理有点混乱:(我有一个名为Noda Time的项目,如果我们完成它会改善事态,但它目前还远没有生产就绪.
| 归档时间: |
|
| 查看次数: |
2671 次 |
| 最近记录: |