C#中对时间的自定义格式化

在今天的开发中需要对时间进行格式化输出,

输出的格式为:00小时00分钟00秒

对于DateTime和TimeSpan均有ToString(string)方法来得到格式化字符串。

第一步不用说,去msdn上查询了一下ToString(string)的实例如下

DateTime.ToString(string)

TimeSpan.ToString(string)

 这两个里面说明了如何使用ToString方法。可是如何编辑格式字符串呢?

格式字符串的写法

这里要着重说明一下,在格式化字符串中,关于小时有h和HH两种,h是采用 12 小时制的小时(从 1 到 12)。H是采用 24 小时制的小时(从 0 到 23)。但是在TimeSpan中不支持H。也就是说如果使用

TimeSpan ts=new TimeSpan();
String str=ts.ToString("H");

是会报错的。
格式字符串中的“d”、“f”、“F”、“g”、“h”、“H”、“K”、“m”、“M”、“s”、“t”、“y”、“z”、“:”或“/”字符被解释为自定义格式说明符而不是文本字符。 若要防止某个字符被解释为格式说明符,你可以在该字符前面加上反斜杠 ()(即转义字符)。 转义字符表示以下字符为应包含在未更改的结果字符串中的字符文本。

格式字符串中的任何其他非转义字符(包括空白字符)都被解释为自定义格式说明符。 大多数情况下,存在任何其他非转义字符都会导致引发 FormatException。
可以通过两种方式将文本字符包含在格式字符串中:
用单引号将文本字符引起来(文本字符串分隔符)。
在文本字符前面放置一个反斜杠(“”),它被解释为转义符。 这意味着,在 C# 中,格式字符串必须是用 @ 引起的,或文本字符的前面必须有额外的反斜杠。
在某些情况下,在格式字符串可能需要使用条件逻辑包括一个转义的文本。

下面将我的解决方法贴出来:

DateTime start=DateTime.Now;
TimeSpan time = start - DateTime.Now;
//使用单引号
string l1 = time.ToString("hh'小时'mm'分钟'ss'秒'");
//使用转义字符
string l2 = time.ToString(@"hh小时mm分钟ss秒");
//对DateTime可以使用H
string l3 = start.ToString(@"HH小时mm分钟ss秒");
//终极解决方案
//单独进行格式化
string l4 = start.Hour + "小时" + start.Minute + "分钟" + start.Second + "";

吼吼吼,推荐大家使用终极解决方案哦!!!

原文地址:https://www.cnblogs.com/mlzx1991/p/3572062.html