【问题标题】:Parse DateTime in C#在 C# 中解析日期时间
【发布时间】:2014-06-11 00:04:05
【问题描述】:

我正在尝试解析如下所示的 TimeString:

11/Apr/2014:00:00:12 +0200

我的代码看起来像

DateTime.ParseExact("11/Apr/2014:00:00:12 +0200", "dd/MMM/yyyy:HH:mm:ss zzz", null)

我查看了the MSDN,它对我来说看起来不错,但我不知道为什么我总是收到 FormatException。

【问题讨论】:

  • 请查看dotnetfiddle.net/zIv6Sv。看来它有效。
  • 你可能想要传入一个特定的 CultureInfo 参数,因为Apr 不适用于很多语言环境
  • 由于您的字符串包含偏移量,您最好将其解析为DateTimeOffset 而不是DateTime

标签: c# .net datetime type-conversion


【解决方案1】:

您应该将InvariantCulture 添加为格式提供程序。

var d = DateTime.ParseExact("11/Apr/2014:00:00:12 +0200", "dd/MMM/yyyy:HH:mm:ss zzz", CultureInfo.InvariantCulture);

您的格式字符串考虑到 /: 字符是特定的格式分隔符,它们将解析为您当前文化中定义的分隔符,就像 HH 在您的格式中表示“小时”一样。请参阅 this page 以查看 time separatordate separator 是预定义的,将被特定区域性的值替换。

escape the special characters 是可能的,但我认为从长远来看,使用InvariantCulture 你的代码会更安全

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-22
    • 1970-01-01
    • 2012-10-14
    • 2013-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多