TimeZoneInfo.ConvertTimeFromUtc c#
这两种方法都可以将Utc时间转换为本地时间,这两种方法在结果或性能上是否有差异 哪个好TimeZoneInfo.ConvertTimeFromUtc c#,c#,.net,datetime,timezone,C#,.net,Datetime,Timezone,这两种方法都可以将Utc时间转换为本地时间,这两种方法在结果或性能上是否有差异 哪个好 为什么Microsoft不在示例中直接使用TimeZoneInfo.Local(至于Result1)我认为将我的评论扩展为一个答案可能是值得的 我有一个在DB中配置了“本地”时区的应用程序,它与服务器本身的本地时区无关。(它正在云服务器中运行)。 因此,使用TimeZoneInfo.Local对我不好 我想做的是从DB读取应该使用的时区, 然后将时间从UTC转换为该时区。 因此,我使用: var Result
为什么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)
,结果将与打开设置时相同,即使它实际上已关闭。这是设计的。我看不出它们之间有什么区别。我认为两者是一样的。第二个选项用于获取其他时区,而不是计算机上设置的本地时区。如果你像在文章中那样使用它,它将给出与另一个选项相同的结果。我看不出它们之间有任何区别。我认为两者是相同的。第二个选项用于获取其他时区,而不是计算机上设置的本地时区。如果你像在文章中那样使用它,它将给出与其他选项相同的结果。