【问题标题】:C# DateTime.Parse giving strange outputC# DateTime.Parse 给出奇怪的输出
【发布时间】:2018-10-17 23:02:13
【问题描述】:

我有一些来自 FR 同事的单元测试代码失败。我怀疑这个问题与某些日期时间格式有关,但我不确定来源是什么。我有一个变量 dt 不能按照我认为的方式解析。下面是我的即时窗口的一些输出

dt
"2016-12-14T00:00:00Z"
DateTime.Parse(dt, CultureInfo.InvariantCulture)
{12/13/2016 7:00:00 PM}
    Date: {12/13/2016 12:00:00 AM}
    Day: 13
    DayOfWeek: Tuesday
    DayOfYear: 348
    Hour: 19
    Kind: Local
    Millisecond: 0
    Minute: 0
    Month: 12
    Second: 0
    Ticks: 636172524000000000
    TimeOfDay: {19:00:00}
    Year: 2016

dt 具有我认为应该的值,看起来是 2016 年 12 月 14 日午夜。但是当我解析它时,我得到了 12 月 13 日晚上 7 点。我觉得很困惑。

【问题讨论】:

  • 字符串为 UTC 而详细报告为当地时间
  • 使用 AdjustToUniversal 指定 DateTimeStyle,它会按照您的预期进行。或者改用我的 Noda Time 项目,惊喜会更少;)
  • 使用Parse().ToUniversalTime()
  • 看看这个非常相似的SO Question & Answer

标签: c# datetime datetime-format


【解决方案1】:

根据this page

当“Z”(祖鲁语)标记在时间的末尾时,表示该时间是UTC。

  • 使用 DateTimeOffset.Parse(string).UtcDateTime。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-27
    • 2021-12-03
    • 2011-06-14
    • 2014-01-21
    • 2014-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多