Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TimeZoneInfo.ConvertTimeFromUtc c#_C#_.net_Datetime_Timezone - Fatal编程技术网

TimeZoneInfo.ConvertTimeFromUtc c#

TimeZoneInfo.ConvertTimeFromUtc c#,c#,.net,datetime,timezone,C#,.net,Datetime,Timezone,这两种方法都可以将Utc时间转换为本地时间,这两种方法在结果或性能上是否有差异 哪个好 为什么Microsoft不在示例中直接使用TimeZoneInfo.Local(至于Result1)我认为将我的评论扩展为一个答案可能是值得的 我有一个在DB中配置了“本地”时区的应用程序,它与服务器本身的本地时区无关。(它正在云服务器中运行)。 因此,使用TimeZoneInfo.Local对我不好 我想做的是从DB读取应该使用的时区, 然后将时间从UTC转换为该时区。 因此,我使用: var Result

这两种方法都可以将Utc时间转换为本地时间,这两种方法在结果或性能上是否有差异

哪个好


为什么Microsoft不在示例中直接使用TimeZoneInfo.Local(至于Result1)

我认为将我的评论扩展为一个答案可能是值得的

我有一个在DB中配置了“本地”时区的应用程序,它与服务器本身的本地时区无关。(它正在云服务器中运行)。 因此,使用TimeZoneInfo.Local对我不好

我想做的是从DB读取应该使用的时区, 然后将时间从UTC转换为该时区。 因此,我使用:

var Result1 = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, TimeZoneInfo.Local)

var Result2 = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow,  TimeZoneInfo.FindSystemTimeZoneById(TimeZoneInfo.Local.Id));

其中GetTimeZoneId()从数据库中读取。

我认为将我的评论扩展为一个答案可能是值得的

我有一个在DB中配置了“本地”时区的应用程序,它与服务器本身的本地时区无关。(它正在云服务器中运行)。 因此,使用TimeZoneInfo.Local对我不好

我想做的是从DB读取应该使用的时区, 然后将时间从UTC转换为该时区。 因此,我使用:

var Result1 = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, TimeZoneInfo.Local)

var Result2 = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow,  TimeZoneInfo.FindSystemTimeZoneById(TimeZoneInfo.Local.Id));

其中GetTimeZoneId()读取数据库中的数据。

问题在于如何使用它们TimeZoneInfo.FindSystemTimeZoneById()在您需要本地以外的其他时区时使用。如果您总是要使用本地时区,只需使用TimeZoneInfo.local


就表现而言,我认为没有太大区别。但是,您可以尝试使用.NET探查器或其他探查器对其进行分析,以了解两者之间的差异。

这取决于您将如何使用它们TimeZoneInfo.FindSystemTimeZoneById()在您需要本地以外的其他时区时使用。如果您总是要使用本地时区,只需使用TimeZoneInfo.local


就表现而言,我认为没有太大区别。但是,您可以尝试使用.NET探查器或其他探查器对其进行分析,以了解两者之间的差异。

唯一的区别是,第二个要绕道获取
TimeZoneInfo
对象,获取其id,然后使用id再次查找同一对象


示例中的代码使用
FindSystemTimeZoneById
方法的原因是它获取了已知id的
TimeZoneInfo
对象,它不是从它已经拥有的
TimeZoneInfo
对象中获取id。

唯一的区别是,第二个对象绕道获取
TimeZoneInfo
对象,获取它的id,然后使用id再次查找同一个对象


示例中的代码使用
FindSystemTimeZoneById
方法的原因是,它为已知id获取
TimeZoneInfo
对象,而不是从它已经拥有的
TimeZoneInfo
对象获取id。

是的,这两个调用之间存在差异

Windows具有自动调整DST的功能,可以在现代Windows的两个位置看到:

在“日期和时间设置”页面中:

在“日期和时间”控制面板的“时区设置”下:

在大多数情况下,建议此设置保持打开状态。但是,如果您将其关闭,
TimeZoneInfo.Local
将考虑到这一点


如果调用
TimeZoneInfo.findsystemtimezonebyd(TimeZoneInfo.Local.Id)
,结果将与打开设置时相同,即使它实际上已关闭。这是出于设计。

是的,这两种调用之间存在差异

Windows具有自动调整DST的功能,可以在现代Windows的两个位置看到:

在“日期和时间设置”页面中:

在“日期和时间”控制面板的“时区设置”下:

在大多数情况下,建议此设置保持打开状态。但是,如果您将其关闭,
TimeZoneInfo.Local
将考虑到这一点


如果调用
TimeZoneInfo.findsystemtimezonebyd(TimeZoneInfo.Local.Id)
,结果将与打开设置时相同,即使它实际上已关闭。这是设计的。

我看不出它们之间有什么区别。我认为两者是一样的。第二个选项用于获取其他时区,而不是计算机上设置的本地时区。如果你像在文章中那样使用它,它将给出与另一个选项相同的结果。我看不出它们之间有任何区别。我认为两者是相同的。第二个选项用于获取其他时区,而不是计算机上设置的本地时区。如果你像在文章中那样使用它,它将给出与其他选项相同的结果。