【问题标题】:c# custom date formatc# 自定义日期格式
【发布时间】:2011-05-30 14:29:39
【问题描述】:

我想在输出中显示单词“day(s)”。我尝试将转义字符放在“-”前面,在“天”中的所有字符和空格前面。任何想法或指示。

这是我正在使用的线路,totalTimeInRoom 是一个 TimeSpan:

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

编辑: 刚试过这个,没有运气:

totalTimeInRoom.ToString(@"dd \"Days(s)\" \- hh\:mm\:ss");

【问题讨论】:

    标签: c# timespan date-format


    【解决方案1】:

    正如here 解释的那样,您可以使用单引号字符在自定义日期格式中嵌入文字字符串:

    totalTimeInRoom.ToString("dd' Day(s) 'hh':'mm':'ss");
    

    【讨论】:

    • @Magnus,它确实适用于单引号字符。请参阅我更新的答案中的链接。
    • 我认为您需要(s) 之后和' 之前的空格,而不是hh 之前的空格。例如totalTimeInRoom.ToString("dd' Day(s) 'hh':'mm':'ss")
    • @IndigoDelta,你说得对。答案已更新,感谢您的提醒:)
    • @Magnus,是的,我最初放错了空格字符。
    • 这也很棒!可惜不能开两张支票。谢谢@Frédéric
    【解决方案2】:

    我之前一直在为此苦苦挣扎,最后总是使用 String.Format “作弊”:

    // extend with minutes, seconds etc. if needed
    var text = String.Format ("{0} day(s), {1} hour(s)", totalTimeInRoom.Days, totalTimeInRoom.Hours);
    

    当然,您可以让它更高级,并且仅在时间跨度中有 1 天或更多天时才显示“天”,而且您可以在时间跨度时动态附加“天”而不是无条件地使用“天”天数大于1。

    【讨论】:

    • 太棒了,谢谢!!!我将在 8 分钟内排除答案。感谢您的帮助。
    猜你喜欢
    • 2011-12-06
    • 1970-01-01
    • 2014-08-17
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    • 2021-08-06
    相关资源
    最近更新 更多