C# TimeSpan:如何使用格式标识符作为格式字符串中的字符?

C# TimeSpan: How to use a format identifier as a character in format string?

给定一个简单的 TimeSpan 值,我如何使用自定义格式字符串将其格式化为 string 值,以便它显示如下:

1 d. 15:14:32

因为使用这种格式时

`d\ d. hh\:mm\:ss`

第二个 'd' 字符当然会自动转换为 Day 参数,因此它不是简单的 d 字符,而是被替换为天数。

所以我的问题是是否有一些特殊的转义序列允许我将这些保留标识符用作格式字符串中的简单字符?

我已经尝试了几个我知道的转义序列,但其中 none 有效,所以我不确定是否可以这样做。我想避免手动组合字符串,因为我在 XAML 绑定中使用了这种格式化模式。

在此先感谢您的帮助!

您可以使用:

"%d\ \d\.\ hh\:mm\:ss"

@"%d\ \d\.\ hh\:mm\:ss"

或者(使用单引号而不是转义):

"%d' d. 'hh':'mm':'ss"

例如:

Console.WriteLine(new TimeSpan(1, 15, 14, 32).ToString("%d\ \d\.\ hh\:mm\:ss"));
Console.WriteLine(new TimeSpan(1, 15, 14, 32).ToString(@"%d\ \d\.\ hh\:mm\:ss"));
Console.WriteLine(new TimeSpan(1, 15, 14, 32).ToString("%d' d. 'hh':'mm':'ss"));

您最终不得不转义几乎所有非内置格式字符的内容,包括空格。

See here for details.