【问题标题】:How do I convert DateTime.Now in the US to local time in the UK?如何将美国的 DateTime.Now 转换为英国的当地时间?
【发布时间】:2011-09-03 07:59:42
【问题描述】:

希望大家玩得开心。

我的应用在美国的服务器上运行,它使用以下代码来选择日期和时间。

var pickUpTime = DateTime.Now.ToShortTimeString();

我想要的是这个字符串应该使用英国时间而不是美国时间。

你能分享一下你的经验吗?

最好的问候, 阿卜杜拉

【问题讨论】:

  • 即使您调整时区,它仍然会基于您的系统时钟,这听起来不像您想要做的。发布您的代码。
  • 我假设您想要的是英国当前的当地时间。但是,在冬季,这个时间恰好与 UTC 相同,您将获得告诉您如何转换为 UTC 的答案。如果你问如何得到北京的当地时间,那就不会发生了。

标签: .net asp.net


【解决方案1】:

您可以使用此代码转换时间:

var now = DateTime.UtcNow;
var timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time");
var britishLocalTime = TimeZoneInfo.ConvertTime(now, timeZoneInfo);

此代码将考虑夏令时。

如果您想使用其他时区,您可以使用TimeZoneInfo.GetSystemTimeZones() 获取所有时区并选择您需要的时区。在我的系统上,它返回 91 个元素。

【讨论】:

  • +1 同意。使用UtcNow 获取基准时间,然后从那里偏移它。 @AbdullahSaqib 你应该开始接受答案了。
【解决方案2】:

您可以将其转换为 GMT,然后转换为您想要的任何内容。

Getting current GMT time

【讨论】:

  • 您链接到的问题实际上是如何使用DateTime.Now。但是,评分最高的答案基本上是使用不考虑夏令时的DateTime.UtcNow
  • @Martin,同意。我只是想对家伙有所了解;)-但您的回答更重要。谢谢。
【解决方案3】:

DateTime.UtcNow 应该这样做 MSDN

【讨论】:

  • -1:不会。当前的英国时间是英国夏令时 (BST),比 UTC/GMT 早一小时。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-28
  • 1970-01-01
  • 1970-01-01
  • 2021-03-20
  • 2015-04-16
相关资源
最近更新 更多