【问题标题】:Is it possible to parse DateTime from "-3:00:00" string?是否可以从“-3:00:00”字符串中解析 DateTime?
【发布时间】:2011-06-30 11:28:13
【问题描述】:

我有一个表示时间偏移的字符串。

我可以从中构建一个 DateTime 对象吗?

我的意思是如果负值是可以的?

【问题讨论】:

  • 听起来您正在尝试解析 TimeSpan 而不是 DateTime
  • 我没有。我有一个第三方库,它有一个以 DateTime 作为参数的方法。我面临这样一个事实,即我需要用 -3:00:00” 的值来喂它。

标签: .net datetime datetime-parsing


【解决方案1】:

如果是偏移量,您不应该使用TimeSpan 而不是DateTime 吗?这也应该处理负时间跨度。

【讨论】:

    【解决方案2】:
    TimeSpan s;
    if (!TimeSpan.TryParse("-3:00:00", out s))
        throw new ArgumentException();
    

    然后

    DateTimeOffset offset = new DateTimeOffset(DateTime.Not, s); // -3
    DateTime d = offset.DateTime; // or .Date
    

    【讨论】:

    • 如果解析不成功抛出异常,使用TryParse有点没用。这模仿了Parse 的行为,那么为什么不使用它呢?
    • @Daniel:这只是一个示例如何对不成功的解析尝试做出反应
    • @Daniel:另外Parse() 会抛出 3 种不同的异常,您可以抛出自定义异常(无需捕获和重新抛出)
    • 好吧,所以有点欺骗 DateTime 而不是使用 TryParse
    • @Captain:如果您只需要时间部分,请不要破解 DateTime,只需使用为此目的实际创建的 TimeSpan
    【解决方案3】:

    this website 显示所有关于解析日期时间字符串的信息

    【讨论】:

      猜你喜欢
      • 2015-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多