2014-02-14 86 views

回答

1

使用DateTime.UtcNow()

获取被设置为当前日期和时间 这台电脑DateTime对象,表示为协调世界时(UTC)。

DateTime td = DateTime.UtcNow(): 
0

不幸的是,“当前”时间区的任何概念是联系在一起的代码运行在机器的操作系统设置。有一些Win32 API用于更改时区,但我不建议使用它们。它们不仅不是“线程安全”的,而且它们也不是“流程安全的”。时区设置会影响机器上运行的所有内容。

这就是说,我会好奇你的用例是什么。如果您能够设置每个线程的时区,那么您可能完全不依赖本地设置。您可以改为使用TimeZoneInfo上的转换方法。

例如,假设您正在寻找其他时区的当前时间。你可能会寻找到这样做的能力:

using (TimeZone.CurrentTimeZone = ... ) 
{ 
    var now = DateTime.Now; 
} 

但是相反,你应该简单地从UTC在适当转换:

var now = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(
        DateTime.UtcNow, "some other timezone id"); 
相关问题