【问题标题】:Problem converting a GMT date to local time using C#?使用 C# 将 GMT 日期转换为本地时间时出现问题?
【发布时间】:2010-02-19 22:47:30
【问题描述】:

我们有一个用 C#(紧凑框架)编写的 Windows Mobile 应用程序。区域设置设置为(英语)新西兰。时区设置为 GMT+12 新西兰。

我们以 GMT/UTC 格式存储日期。 我们有一个 UTC 日期 2010-02-18 18:00:00

新西兰的这个时间是早上 7:00。

当我们调用一个日期时间对象时

starttime = starttime.ToLocalTime();

我们早上 9:00。
我们做错了什么?

【问题讨论】:

  • 您确认starttime 确实是格林威治标准时间吗?
  • 如果你的时区是 GMT+12,18.00 h 应该不会导致 6.00 h 吗? 7.00h 和 9.00h 似乎都不是正确的答案。 (困惑...)
  • @Treb:我猜新西兰是在 2 月中旬的夏季时间。奇怪...
  • @Treb 我也很困惑,我不知道如何正确地将 UTC 日期转换为本地时间。 GMT+12 新西兰选项可通过 Windows Mobile 设备的时间设置中的下拉菜单获得。
  • @Zach 我确认它确实是格林威治标准时间。我的本地时区效果很好,我们在新西兰遇到了问题。

标签: c# datetime windows-mobile compact-framework timezone


【解决方案1】:

您是否指定了该日期时间的“种类”?像这样的:

DateTime parsedStartTime = DateTime.SpecifyKind(
    DateTime.Parse(starttime),
    DateTimeKind.Utc);

DateTime localStartTime = parsedStartTime.DateToLocalTime();

这可能会有所帮助,因为它可能不知道您现在拥有的日期时间是 Utc 类型(可能未指定)。

如果这没有帮助,也许你的一些代码显示你如何设置 starttime 会有所帮助。

【讨论】:

  • 我在 ParseExact 方法中添加了 DateTimeStyles.AssumeUniversal 并且工作正常。
猜你喜欢
  • 2021-05-02
  • 1970-01-01
  • 2013-05-04
  • 2014-10-25
  • 1970-01-01
  • 2012-07-24
  • 1970-01-01
  • 2011-08-29
  • 2013-10-29
相关资源
最近更新 更多