【问题标题】:How convert TimeSpan to 24 hours and minutes String?如何将 TimeSpan 转换为 24 小时和分钟字符串?
【发布时间】:2013-08-28 08:05:32
【问题描述】:

我使用此代码将Timespan 转换为String(例如:14:53):

myTimeSpan.ToString("hh:mm");

但是会出现这个错误:

输入的字符串格式不正确

这样做的正确方法是什么?

【问题讨论】:

标签: c# tostring timespan


【解决方案1】:
myTimeSpan.ToString(@"hh\:mm")

Custom TimeSpan Format Strings

自定义 TimeSpan 格式说明符不包含占位符 分隔符,例如将天与小时分开的符号, 小时从分钟,或秒从小数秒。相反,这些 符号必须作为字符串包含在自定义格式字符串中 文字。例如,“dd.hh\:mm”将句点 (.) 定义为 天和小时之间的分隔符,冒号 (:) 作为分隔符 在小时和分钟之间。

【讨论】:

  • 请注意,这不能处理超过 24 小时的时间段(它会丢失天数部分)。
  • @MatthewWatson:正确。由于标题和他的尝试,我认为 OP 的最大值是 24 小时。他可以包括这些日子:myTimeSpan.ToString(@"d\.hh\:mm")
【解决方案2】:

您需要将@"hh\:mm\" 用于TimeSpan。时间跨度格式与DateTime不完全相同

myTimeSpan.ToString(@"hh\:mm");

查看Msdn了解更多信息

【讨论】:

    【解决方案3】:
    var result = string.Format("{0:D2}:{1:D2}",  myTimeSpan.Hours, myTimeSpan.Minutes);
    

    【讨论】:

    • 这保留了 + 和 - 在时区的偏移量,这很重要。即15.10.2014 14:00:00 +02:00 代表当地时间下午 2 点,时区为 +2 UTC。
    【解决方案4】:

    来自TimeSpan.ToString Method (String)

    TimeSpan t = new TimeSpan(14, 53, 0);
    Console.WriteLine(t.ToString(@"hh\:mm"));
    

    你也可以使用String.Format like;

    Console.WriteLine(String.Format("{0}:{1}", t.Hours, t.Minutes));
    

    记住TimeSpan.ToString(String) 重载仅适用于 .NET 4 或更高版本。

    【讨论】:

      【解决方案5】:

      试试这个会 100% 工作!

      myTimeSpan.ToString(@"dd\.hh\:mm");.
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-01-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多