【问题标题】:Parse a TimeSpan greater than 24 hours? [duplicate]解析大于 24 小时的 TimeSpan? [复制]
【发布时间】:2013-04-02 04:44:38
【问题描述】:

我有这个功能:

  public static decimal Hours(string s)
    {    
        return (decimal)TimeSpan.Parse(s).TotalHours + 0.005M;
    }

格式为小时:分钟,例如:30:20 或 10:17。如果我写给它说 25:03 或 30:20 它会失败,因为它已经超过 24 小时。有没有办法让它解析 > 23:59 的东西? 简单来说,如果我的字符串是 30:30,这个函数需要返回 30.5。

【问题讨论】:

  • 试过“1.02:03:04.005”格式(1天2小时3分钟4秒5毫秒)?
  • 是的,有办法..但我认为您使用的 TimeSpan 检查不正确,您应该将其从TimeSpan's .TotalHours 属性中检查出来,您需要将其与当前的 DateTime 进行比较TimeSpan
  • 我提供的字符串是 h:m,它需要使用它。
  • 看起来你想通过它 1 天 6 小时 30 分钟......如果你已经有 30:30 那么我想你知道总小时数是多少。
  • 试试看this SO question

标签: c# asp.net


【解决方案1】:

我不确定是否可以使用标准 TimeSpan.Parse() 方法来完成,但您可以这样做:

public static decimal Hours(string s)
{
    decimal r;
    if (decimal.TryParse(s, out r))
        return r;

    var parts = s.Split(':');
    return (decimal)new TimeSpan(int.Parse(parts[0]), int.Parse(parts[1]),0).TotalHours;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-20
    • 1970-01-01
    • 2021-05-28
    • 1970-01-01
    相关资源
    最近更新 更多