【问题标题】:'TimeZoneInfo' does not contain a definition for 'ConvertTimeFromUtc' (DNX Core 5.0)“TimeZoneInfo”不包含“ConvertTimeFromUtc”的定义(DNX Core 5.0)
【发布时间】:2015-11-06 19:58:06
【问题描述】:

以下代码在升级到 asp5 之前可以正常工作。 DNX Core 5.0 不支持 ConvertTimeFromUtc 方法。是否有另一种适当的方法来实现这一目标?

public DateTime GmtNow() {
    return TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time"));
}

【问题讨论】:

  • 你不能用TimeZoneInfo.ConvertTime(DateTime.UtcNow, TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time"))吗?
  • 哦,所以当时重构了,有道理。谢谢。您可以将此作为答案发布,以便我接受吗?干杯
  • 也许我忽略了一些显而易见的事情,但这种转换的意义究竟是什么? DateTime.UtcNow 不是已经给你正确的价值了吗?是的,DateTime.UtcNow 没有任何夏令时,但 GMT 也不应该有,即使微软确实混淆地声称它有。
  • 嗯,我需要考虑一些变量。我有一个爱尔兰网站,但服务器托管在荷兰,我想为所有用户返回爱尔兰时间。此外,当使用普通 utc 时,我注意到夏令时问题,因此需要进行适当的转换,这就是我需要上述解决方案的原因。希望这是有道理的,谢谢你的提问。
  • 另外,这只是一个术语混淆。 Microsoft 使用 GMT 来指代包含都柏林、爱丁堡、里斯本、伦敦的时区,而那些确实使用夏令时的时区。此外,TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time").SupportsDaylightSavingTime 将返回 true,因此支持夏令时。

标签: c# asp.net-core dnx


【解决方案1】:

那个方法已经不存在了,我猜是因为下面的方法涵盖了所有的选项:

TimeZoneInfo.ConvertTime(
    DateTime.UtcNow, TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time"))

【讨论】:

  • 这与 DateTime.UtcNow 有何不同? GMT 没有 DST,所以结果总是一样的
  • 这只是一个术语混淆。 Microsoft 使用 GMT 来指代包含都柏林、爱丁堡、里斯本、伦敦的时区,而那些确实使用夏令时的时区。试试这个:TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time").SupportsDaylightSavingTime。它输出真。
  • @Toonsylvania :嗨,SupportsDaylightSavingTime 方法返回 bool,那么我们如何获得支持夏令时的此类时区的转换日期时间。我面临从 GMT 到 Eastern Standard Timezone 的一次转换的问题。 GMT 到 Mountain Standard Timezone 的相同日期时间转换工作正常。是否有特定于时区的区域?
猜你喜欢
  • 2016-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多