C# 格式字符串
日期和时间类型
日期和时间类型(DateTime , DateTimeOffset)
标准日期和时间格式字符串
"d": 短日期模式。2009-06-15T13:45:30 -> 6/15/2009 (en-US)
2009-06-15T13:45:30 -> 15/06/2009 (fr-FR)
2009-06-15T13:45:30 -> 2009/06/15 (ja-JP)“D”: 长日期模式。2009-06-15T13:45:30 -> Monday, June 15, 2009 (en-US)
2009-06-15T13:45:30 -> 15 июня 2009 г. (ru-RU)
2009-06-15T13:45:30 -> Montag, 15. Juni 2009 (de-DE)“f”: 完整日期/时间模式(短时间)。2009-06-15T13:45:30 -> Monday, June 15, 2009 1:45 PM (en-US)
2009-06-15T13:45:30 -> den 15 juni 2009 13:45 (sv-SE)
2009-06-15T13:45:30 -> Δευτέρα, 15 Ιουνίου 2009 1:45 μμ (el-GR)“F”: 完整日期/时间模式(长时间)。2009-06-15T13:45:30 -> Monday, June 15, 2009 1:45:30 PM (zh-CN)
2009-06-15T13:45:30 -> den 15 juni 2009 13:45:30 (sv-SE)
2009-06-15T13:45:30 -> Δευτέρα, 15 Ιουνίου 2009 1:45:30 μμ (el-GR)“g”: 常规日期/时间模式(短时间)。2009-06-15T13:45:30 -> 6/15/2009 1:45 PM (en-US)
2009-06-15T13:45:30 -> 15/06/2009 13:45 (es-ES)
2009-06-15T13:45:30 -> 2009/6/15 13:45 (zh-CN)“G”: 常规日期/时间模式(长时间)。2009-06-15T13:45:30 -> 6/15/2009 1:45:30 PM (en-US)
2009-06-15T13:45:30 -> 15/06/2009 13:45:30 (es-ES)
2009-06-15T13:45:30 -> 2009/6/15 13:45:30 (zh-CN)“M”、“m”: 月/日模式。2009-06-15T13:45:30 -> June 15 (en-US)
2009-06-15T13:45:30 -> 15. juni (da-DK)
2009-06-15T13:45:30 -> 15 Juni (id-ID)“O”、“o”: 往返日期/时间模式。DateTime值:2009-06-15T13:45:30 (DateTimeKind.Local) --> 2009-06-15T13:45:30.0000000-07:00
2009-06-15T13:45:30 (DateTimeKind.Utc) --> 2009-06-15T13:45:30.0000000Z
2009-06-15T13:45:30 (DateTimeKind.Unspecified) --> 2009-06-15T13:45:30.0000000DateTimeOffset值:2009-06-15T13:45:30-07:00 --> 2009-06-15T13:45:30.0000000-07:00
“R”、“r”: RFC1123 模式。2009-06-15T13:45:30 -> Mon, 15 Jun 2009 20:45:30 GMT
“s”: 可排序日期/时间模式。2009-06-15T13:45:30 (DateTimeKind.Local) -> 2009-06-15T13:45:30
2009-06-15T13:45:30 (DateTimeKind.Utc) -> 2009-06-15T13:45:30“t”: 短时间模式。2009-06-15T13:45:30 -> 1:45 PM (en-US)
2009-06-15T13:45:30 -> 13:45 (hr-HR)
2009-06-15T13:45:30 -> 01:45 م (ar-EG)“T”: 长时间模式。2009-06-15T13:45:30 -> 1:45:30 PM (en-US)
2009-06-15T13:45:30 -> 13:45:30 (hr-HR)
2009-06-15T13:45:30 -> 01:45:30 م (ar-EG)“u”: 通用可排序日期/时间模式。带有
DateTime值:2009-06-15T13:45:30 -> 2009-06-15 13:45:30Z
带有
DateTimeOffset值:2009-06-15T13:45:30 -> 2009-06-15 20:45:30Z
“U”: 通用完整日期/时间模式。2009-06-15T13:45:30 -> Monday, June 15, 2009 8:45:30 PM (en-US)
2009-06-15T13:45:30 -> den 15 juni 2009 20:45:30 (sv-SE)
2009-06-15T13:45:30 -> Δευτέρα, 15 Ιουνίου 2009 8:45:30 μμ (el-GR)“Y”、“y”: 年月模式。2009-06-15T13:45:30 -> June, 2009 (en-US)
2009-06-15T13:45:30 -> juni 2009 (da-DK)
2009-06-15T13:45:30 -> Juni 2009 (id-ID)任何其他单个字符 : 未知说明符。
引发运行时
FormatException。
// Display using current (en-us) culture's short date format
DateTime thisDate = new DateTime(2008, 3, 15);
Console.WriteLine(thisDate.ToString("d")); // Displays 3/15/2008自定义日期和时间格式字符串
"d": 一个月中的某一天(1 到 31)。2009-06-01T13:45:30 -> 1
2009-06-15T13:45:30 -> 15“dd”: 一个月中的某一天(01 到 31)。2009-06-01T13:45:30 -> 01
“ddd”: 一周中某天的缩写名称。2009-06-15T13:45:30 -> Mon (en-US)
2009-06-15T13:45:30 -> Пн (ru-RU)
2009-06-15T13:45:30 -> lun. (fr-FR)“dddd”: 一周中某天的完整名称。2009-06-15T13:45:30 -> Monday (en-US)
2009-06-15T13:45:30 -> понедельник (ru-RU)
2009-06-15T13:45:30 -> lundi (fr-FR)“f”: 日期和时间值的十分之几秒。2009-06-15T13:45:30.6170000 -> 6
2009-06-15T13:45:30.05 -> 0“ff”: 日期和时间值的百分之几秒。2009-06-15T13:45:30.6170000 -> 61
2009-06-15T13:45:30.0050000 -> 00“fff”: 日期和时间值的千分之几秒。6/15/2009 13:45:30.617 -> 617
6/15/2009 13:45:30.0005 -> 000“ffff”: 日期和时间值的万分之几秒。2009-06-15T13:45:30.6175000 -> 6175
2009-06-15T13:45:30.0000500 -> 0000“fffff”: 日期和时间值的十万分之几秒。2009-06-15T13:45:30.6175400 -> 61754
6/15/2009 13:45:30.000005 -> 00000“ffffff”: 日期和时间值的百万分之几秒。2009-06-15T13:45:30.6175420 -> 617542
2009-06-15T13:45:30.0000005 -> 000000“fffffff”: 日期和时间值的千万分之几秒。2009-06-15T13:45:30.6175425 -> 6175425
2009-06-15T13:45:30.0001150 -> 0001150“F”: 如果非零,则为日期和时间值的十分之几秒。2009-06-15T13:45:30.6170000 -> 6
2009-06-15T13:45:30.0500000 -> (无输出)“FF”: 如果非零,则为日期和时间值的百分之几秒。2009-06-15T13:45:30.6170000 -> 61
2009-06-15T13:45:30.0050000 -> (无输出)“FFF”: 如果非零,则为日期和时间值的千分之几秒。2009-06-15T13:45:30.6170000 -> 617
2009-06-15T13:45:30.0005000 -> (无输出)“FFFF”: 如果非零,则为日期和时间值的万分之几秒。2009-06-15T13:45:30.5275000 -> 5275
2009-06-15T13:45:30.0000500 -> (无输出)“FFFFF”: 如果非零,则为日期和时间值的十万分之几秒。2009-06-15T13:45:30.6175400 -> 61754
2009-06-15T13:45:30.0000050 -> (无输出)“FFFFFF”: 如果非零,则为日期和时间值的百万分之几秒。2009-06-15T13:45:30.6175420 -> 617542
2009-06-15T13:45:30.0000005 -> (无输出)“FFFFFFF”: 如果非零,则为日期和时间值的千万分之几秒。2009-06-15T13:45:30.6175425 -> 6175425
2009-06-15T13:45:30.0001150 -> 000115“g”、“gg”: 时期或纪元。2009-06-15T13:45:30.6170000 -> A.D.
“h”: 采用 12 小时制的小时(从 1 到 12)。2009-06-15T01:45:30 -> 1
2009-06-15T13:45:30 -> 1“hh”: 采用 12 小时制的小时从(01 到 12)。2009-06-15T01:45:30 -> 01
2009-06-15T13:45:30 -> 01“H”: 采用 24 小时制的小时(从 0 到 23)。2009-06-15T01:45:30 -> 1
2009-06-15T13:45:30 -> 13“HH”: 采用 24 小时制的小时(从 00 到 23)。2009-06-15T01:45:30 -> 01
“K”: 时区信息。带
DateTime值:2009-06-15T13:45:30, Kind Unspecified ->
2009-06-15T13:45:30, Kind Utc -> Z
2009-06-15T13:45:30, Kind Local -> -07:00(取决于本地计算机的设置)带
DateTimeOffset值:2009-06-15T01:45:30-07:00 --> -07:00
2009-06-15T08:45:30+00:00 --> +00:00
“m”: 分钟(0 到 59)。2009-06-15T01:09:30 -> 9
2009-06-15T13:29:30 -> 29“mm”: 分钟(00 到 59)。2009-06-15T01:09:30 -> 09
2009-06-15T01:45:30 -> 45“M”: 月份(1 到 12)。2009-06-15T13:45:30 -> 6
“MM”: 月份(1 到 12)。2009-06-15T13:45:30 -> 06
“MMM”: 月份的缩写名称。2009-06-15T13:45:30 -> Jun (en-US)
2009-06-15T13:45:30 -> juin (fr-FR)
2009-06-15T13:45:30 -> Jun (zu-ZA)“MMMM”: 月份的完整名称。2009-06-15T13:45:30 -> June (en-US)
2009-06-15T13:45:30 -> juni (da-DK)
2009-06-15T13:45:30 -> uJuni (zu-ZA)“s”: 秒(0 到 59)。2009-06-15T13:45:09 -> 9
“ss”: 秒(00 到 59)。2009-06-15T13:45:09 -> 09
“t”: AM/PM 指示符的第一个字符。2009-06-15T13:45:30 -> P (en-US)
2009-06-15T13:45:30 -> 午 (ja-JP)
2009-06-15T13:45:30 -> (fr-FR)“tt”: AM/PM 指示符。2009-06-15T13:45:30 -> PM (en-US)
2009-06-15T13:45:30 -> 午後 (ja-JP)“y”: 年份(0 到 99)。0001-01-01T00:00:00 -> 1
0900-01-01T00:00:00 -> 0
1900-01-01T00:00:00 -> 0
2009-06-15T13:45:30 -> 9
2019-06-15T13:45:30 -> 19“yy”: 年份(00 到 99)。0001-01-01T00:00:00 -> 01
0900-01-01T00:00:00 -> 00
1900-01-01T00:00:00 -> 00“yyy”: 年份(最少三位数字)。0001-01-01T00:00:00 -> 001
0900-01-01T00:00:00 -> 900
1900-01-01T00:00:00 -> 1900
2009-06-15T13:45:30 -> 2009“yyyy”: 由四位数字表示的年份。0001-01-01T00:00:00 -> 0001
0900-01-01T00:00:00 -> 0900“yyyyy”: 由五位数字表示的年份。0001-01-01T00:00:00 -> 00001
2009-06-15T13:45:30 -> 02009“z”: 相对于 UTC 的小时偏移量,无前导零。2009-06-15T13:45:30-07:00 -> -7
“zz”: 相对于 UTC 的小时偏移量,带有表示一位数值的前导零。2009-06-15T13:45:30-07:00 -> -07
“zzz”: 相对于 UTC 的小时和分钟偏移量。2009-06-15T13:45:30-07:00 -> -07:00
":": 时间分隔符。2009-06-15T13:45:30 -> : (en-US)
2009-06-15T13:45:30 -> . (it-IT)
2009-06-15T13:45:30 -> : (ja-JP)"/": 日期分隔符。2009-06-15T13:45:30 -> / (en-US)
2009-06-15T13:45:30 -> - (ar-DZ)
2009-06-15T13:45:30 -> . (tr-TR)"string "、'string ': 文本字符串分隔符。2009-06-15T13:45:30 (
"arr:" h:m t) -> arr:1:45 P
2009-06-15T13:45:30 ('arr:' h:m t) -> arr:1:45 P%: 将下面的字符定义为自定义格式说明符。2009-06-15T13:45:30 (
%h) -> 1\: 转义字符。2009-06-15T13:45:30 (
h \h) -> 1 h任何其他字符 : 字符将复制到未更改的结果字符串。
2009-06-15T01:45:30 (
arr hh:mm t) -> arr 01:45 A
DateTime thisDate1 = new DateTime(2011, 6, 10);
Console.WriteLine("Today is " + thisDate1.ToString("MMMM dd, yyyy") + ".");
DateTimeOffset thisDate2 = new DateTimeOffset(2011, 6, 10, 15, 24, 16,
TimeSpan.Zero);
Console.WriteLine("The current date and time: {0:MM/dd/yy H:mm:ss zzz}",
thisDate2);
// The example displays the following output:
// Today is June 10, 2011.
// The current date and time: 06/10/11 15:24:16 +00:00枚举类型
枚举类型(所有派生自 System.Enum 的类型)
G或g如有可能,将枚举项显示为字符串值,否则显示当前实例的整数值。 如果枚举使用
Flags属性集进行定义,则每个有效项的字符串值会连接在一起(以逗号分隔)。如果未设置Flags属性,则将无效值显示为数字项。下面的示例演示
G格式说明符。csharpConsole.WriteLine(ConsoleColor.Red.ToString("G")); // Displays Red FileAttributes attributes = FileAttributes.Hidden | FileAttributes.Archive; Console.WriteLine(attributes.ToString("G")); // Displays Hidden, ArchiveF或f如有可能,将枚举项显示为字符串值。 如果值可以完全显示为枚举中项的总和(即使未提供
Flags属性),则每个有效项的字符串值会连接在一起(以逗号分隔)。如果值不能由枚举项完全确定,则值会格式化为整数值。下面的示例演示
F格式说明符。csharpConsole.WriteLine(ConsoleColor.Blue.ToString("F")); // Displays Blue FileAttributes attributes = FileAttributes.Hidden | FileAttributes.Archive; Console.WriteLine(attributes.ToString("F")); // Displays Hidden, ArchiveD或d以尽可能短的表示形式将枚举项显示为整数值。
下面的示例演示
D格式说明符。csharpConsole.WriteLine(ConsoleColor.Cyan.ToString("D")); // Displays 11 FileAttributes attributes = FileAttributes.Hidden | FileAttributes.Archive; Console.WriteLine(attributes.ToString("D")); // Displays 34X或x将枚举项显示为十六进制值。根据需要以前导零表示此值,以确保在枚举类型的基础数值类型中,结果字符串的每个字节都有两个字符。下面的示例演示
X格式说明符。在示例中,这两者的基础类型ConsoleColor和FileAttributes为Int32,或 32 位(或 4 字节)整数,它将生成 8 个字符的结果字符串。csharpConsole.WriteLine(ConsoleColor.Cyan.ToString("X")); // Displays 0000000B FileAttributes attributes = FileAttributes.Hidden | FileAttributes.Archive; Console.WriteLine(attributes.ToString("X")); // Displays 00000022
数值类型
数值类型:BigInteger、Byte、Decimal、Double、Int16、Int32、Int64、SByte、Single、UInt16、 UInt32、UInt64
标准数字格式字符串
标准数字格式字符串用于格式化通用数值类型。标准数字格式字符串采用 Axx 的形式,其中:
A是称为 “格式说明符” 的单个字母字符。任何包含一个以上字母字符(包括空白)的数字格式字符串都被解释为自定义数字格式字符串。有关更多信息,请参见自定义数字格式字符串。xx是称为 “精度说明符” 的可选整数。精度说明符的范围从 0 到 99,并且影响结果中的位数。请注意,精度说明符控制数字的字符串表示形式中的数字个数。它不舍入该数字。若要执行舍入运算,请使用Math.Ceiling、Math.Floor或Math.Round方法。
当精度说明符控制结果字符串中的小数位数时,结果字符串会反映一个数字,该数字四舍五入到最接近无限精确结果的可表示结果。如果有两个同样接近的可表示结果:
在 .NET Framework 和.NET Core(.NET Core 2.0 及以下)上,运行时选择最低有效数字更高的结果(即使用
MidpointRounding.AwayFromZero) 。在 .NET Core 2.1 及更高版本上,运行时选择最低有效数字为偶数的结果(即使用
MidpointRounding.ToEven) 。
格式说明符:
“C”或“c”: 货币(结果:货币值。)123.456 (
"C", en-US) -> $123.46
123.456 ("C", fr-FR) -> 123,46 €
123.456 ("C", ja-JP) -> ¥123
-123.456 ("C3", en-US) -> ($123.456)
-123.456 ("C3", fr-FR) -> -123,456 €
-123.456 ("C3", ja-JP) -> -¥123.456“D”或“d”: 十进制(结果:整型数字,负号可选。)1234 (
"D") -> 1234
-1234 ("D6") -> -001234“E”或“e”: 指数(科学型)(结果:指数表示法。)1052.0329112756 (
"E", en-US) -> 1.052033E+003
1052.0329112756 ("e", fr-FR) -> 1,052033e+003
-1052.0329112756 ("e2", en-US) -> -1.05e+003
-1052.0329112756 ("E2", fr-FR) -> -1,05E+003“F”或“f”: 定点(结果:整数和十进制小数,负号可选。)1234.567 (
"F", en-US) -> 1234.57
1234.567 ("F", de-DE) -> 1234,57
1234 ("F1", en-US) -> 1234.0
1234 ("F1", de-DE) -> 1234,0
-1234.56 ("F4", en-US) -> -1234.5600
-1234.56 ("F4", de-DE) -> -1234,5600“G”或“g”: 常规(结果:更紧凑的定点表示法或科学记数法。)-123.456 (
"G", en-US) -> -123.456
-123.456 ("G", sv-SE) -> -123,456
123.4546 ("G4", en-US) -> 123.5
123.4546 ("G4", sv-SE) -> 123,5
-1.234567890e-25 ("G", en-US) -> -1.23456789E-25
-1.234567890e-25 ("G", sv-SE) -> -1,23456789E-25“N”或“n”: 数字(结果:整数和十进制小数、组分隔符和十进制小数分隔符,负号可选。)1234.567 (
"N", en-US) -> 1,234.57
1234.567 ("N", ru-RU) -> 1 234,57
1234 ("N1", en-US) -> 1,234.0
1234 ("N1", ru-RU) -> 1 234,0
-1234.56 ("N3", en-US) -> -1,234.560
-1234.56 ("N3", ru-RU) -> -1 234,560“P”或“p”: 百分比(结果:数字乘以 100 并以百分比符号显示。)1 (
"P", en-US) -> 100.00 %
1 ("P", fr-FR) -> 100,00 %
-0.39678 ("P1", en-US) -> -39.7 %
-0.39678 ("P1", fr-FR) -> -39,7 %“R”或“r”: 往返过程(结果:可以往返至相同数字的字符串。)123456789.12345678 (
"R") -> 123456789.12345678
-1234567890.12345678 ("R") -> -1234567890.1234567“X”或“x”: 十六进制(结果:十六进制字符串。)255 (
"X") -> FF
-1 ("x") -> ff
255 ("x4") -> 00ff
-1 ("X4") -> 00FF任何其他单个字符 : 未知说明符(结果:在运行时引发
FormatException。)
decimal value = 123.456m;
Console.WriteLine(value.ToString("C2"));
// Displays $123.46
Console.WriteLine("Your account balance is {0:C2}.", value);
// Displays "Your account balance is $123.46."
decimal[] amounts = { 16305.32m, 18794.16m };
Console.WriteLine(" Beginning Balance Ending Balance");
Console.WriteLine(" {0,-28:C2}{1,14:C2}", amounts[0], amounts[1]);
// Displays:
// Beginning Balance Ending Balance
// $16,305.32 $18,794.16自定义数字格式字符串
“0”: 零占位符(用对应的数字(如果存在)替换零;否则,将在结果字符串中显示零。)1234.5678 (
"00000") -> 01235
0.45678 ("0.00", en-US) -> 0.46
0.45678 ("0.00", fr-FR) -> 0,46"#": 数字占位符(用对应的数字(如果存在)替换“#”符号;否则,不会在结果字符串中显示任何数字。)1234.5678 (
"#####") -> 1235
0.45678 ("#.##", en-US) -> .46
0.45678 ("#.##", fr-FR) -> ,46".": 小数点(确定小数点分隔符在结果字符串中的位置。)0.45678 (
"0.00", *en-US*) -> 0.46",": 组分隔符和数字比例换算(用作组分隔符和数字比例换算说明符。 作为组分隔符时,它在各个组之间插入本地化的组分隔符字符。 作为数字比例换算说明符,对于每个指定的逗号,它将数字除以 1000。)组分隔符说明符:
2147483647 (
"##,#", en-US) -> 2,147,483,647
2147483647 ("##,#", es-ES) -> 2.147.483.647比例换算说明符:
2147483647 (
"#,#,,", en-US) -> 2,147
2147483647 ("#,#,,", es-ES) -> 2.147
"%": 百分比占位符(将数字乘以 100,并在结果字符串中插入本地化的百分比符号。)0.3697 (
"%#0.00", en-US) -> %36.97
0.3697 ("%#0.00", el-GR) -> %36,97
0.3697 ("##.0 %", en-US) -> 37.0 %
0.3697 ("##.0 %", el-GR) -> 37,0 %"‰": 千分比占位符(将数字乘以 1000,并在结果字符串中插入本地化的千分比符号。)0.03697 (
"#0.00‰", *en-US*) -> 36.97‰
0.03697 ("#0.00‰", ru-RU) -> 36,97‰“E0”、“E+0”、“E-0”、“e0”、“e+0”、“e-0”: 指数表示法(如果后跟至少一个 0(零),则使用指数表示法设置结果格式。 “E”或“e”指示指数符号在结果字符串中是大写还是小写。 跟在“E”或“e”字符后面的零的数目确定指数中的最小位数。 加号 (+) 指示符号字符总是置于指数前面。 减号 (-) 指示符号字符仅置于负指数前面。)987654 (
"#0.0e0") -> 98.8e4
1503.92311 ("0.0##e+00") -> 1.504e+03
1.8901385E-16 ("0.0e+00") -> 1.9e-16“\”: 转义符(使下一个字符被解释为文本而不是自定义格式说明符。)987654 (
"\###00\#") -> #987654#'string '、"string": 文本字符串分隔符(指示应复制到未更改的结果字符串的封闭字符。)68 (
"# 'degrees'") -> 68 degrees
68 ("# ' degrees'") -> 68 degrees;: 部分分隔符(通过分隔格式字符串定义正数、负数和零各部分。)12.345 (
"#0.0#;(#0.0#);-\0-") -> 12.35
0 ("#0.0#;(#0.0#);-\0-") -> -0-
-12.345 ("#0.0#;(#0.0#);-\0-") -> (12.35)
12.345 ("#0.0#;(#0.0#)") -> 12.35
0 ("#0.0#;(#0.0#)") -> 0.0
-12.345 ("#0.0#;(#0.0#)") -> (12.35)其他: 所有其他字符(字符将复制到未更改的结果字符串。)68 (
"# °") -> 68 °
double value;
value = 123;
Console.WriteLine(value.ToString("00000"));
Console.WriteLine(String.Format("{0:00000}", value));
// Displays 00123
value = 1.2;
Console.WriteLine(value.ToString("#.##", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:#.##}", value));
// Displays 1.2
value = 1.2;
Console.WriteLine(value.ToString("0.00", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:0.00}", value));
// Displays 1.20
value = 1234567890;
Console.WriteLine(value.ToString("#,#", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:#,#}", value));
// Displays 1,234,567,890
value = .086;
Console.WriteLine(value.ToString("#0.##%", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:#0.##%}", value));
// Displays 8.6%
value = .00354;
string perMilleFmt = "#0.## " + '\u2030';
Console.WriteLine(value.ToString(perMilleFmt, CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:" + perMilleFmt + "}", value));
// Displays 3.54‰
value = 86000;
Console.WriteLine(value.ToString("0.###E+0", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:0.###E+0}", value));
// Displays 8.6E+4
int ivalue = 123;
Console.WriteLine(ivalue.ToString("\\#\\#\\# ##0 dollars and \\0\\0 cents \\#\\#\\#"));
Console.WriteLine(String.Format("{0:\\#\\#\\# ##0 dollars and \\0\\0 cents \\#\\#\\#}",
ivalue));
// Displays ### 123 dollars and 00 cents ###
double posValue = 1234;
double negValue = -1234;
double zeroValue = 0;
string fmt2 = "##;(##)";
string fmt3 = "##;(##);**Zero**";
Console.WriteLine(posValue.ToString(fmt2));
Console.WriteLine(String.Format("{0:" + fmt2 + "}", posValue));
// Displays 1234
Console.WriteLine(negValue.ToString(fmt2));
Console.WriteLine(String.Format("{0:" + fmt2 + "}", negValue));
// Displays (1234)
Console.WriteLine(zeroValue.ToString(fmt3));
Console.WriteLine(String.Format("{0:" + fmt3 + "}", zeroValue));
// Displays **Zero**
double n = 123.8;
Console.WriteLine($"{n:#,##0.0K}");
// The example displays the following output:
// 123.8KGuid
N:32 位数:00000000000000000000000000000000
D:32 的数字,由连字符分隔:00000000-0000-0000-0000-000000000000
B:32 位,用连字符隔开,括在大括号中:{00000000-0000-0000-0000-000000000000}
P:32 位,用连字符隔开,括在括号中:(00000000-0000-0000-0000-000000000000)
X:括在大括号中的四个十六进制值,其中第四个值是八个十六进制值的子集(也括在大括号中):{0x00000000,0x0000,0x0000,{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}
static void Main(string[] args)
{
Guid guid = Guid.NewGuid();
Console.WriteLine($"guid.ToString(): {guid.ToString()}");
Console.WriteLine($"guid.ToString(null): {guid.ToString(null)}");
Console.WriteLine($"guid.ToString(\"\"): {guid.ToString("")}");
Console.WriteLine($"guid.ToString(\"N\"): {guid.ToString("N")}");
Console.WriteLine($"guid.ToString(\"D\"): {guid.ToString("D")}");
Console.WriteLine($"guid.ToString(\"B\"): {guid.ToString("B")}");
Console.WriteLine($"guid.ToString(\"P\"): {guid.ToString("P")}");
Console.WriteLine($"guid.ToString(\"X\"): {guid.ToString("X")}");
Console.ReadLine();
}
// Output:
// guid.ToString(): 60125f52-256b-4e27-9d0a-7c64611e4d3e
// guid.ToString(null): 60125f52-256b-4e27-9d0a-7c64611e4d3e
// guid.ToString(""): 60125f52-256b-4e27-9d0a-7c64611e4d3e
// guid.ToString("N"): 60125f52256b4e279d0a7c64611e4d3e
// guid.ToString("D"): 60125f52-256b-4e27-9d0a-7c64611e4d3e
// guid.ToString("B"): {60125f52-256b-4e27-9d0a-7c64611e4d3e}
// guid.ToString("P"): (60125f52-256b-4e27-9d0a-7c64611e4d3e)
// guid.ToString("X"): {0x60125f52,0x256b,0x4e27,{0x9d,0x0a,0x7c,0x64,0x61,0x1e,0x4d,0x3e}}TimeSpan
标准 TimeSpan 格式字符串
“c”: 常量(固定)格式(此说明符不区分区域性。 它的形式是[-][d'.']hh':'mm':'ss['.'fffffff]。)TimeSpan.Zero -> 00:00:00
New TimeSpan(0, 0, 30, 0) -> 00:30:00
New TimeSpan(3, 17, 25, 30, 500) -> 3.17:25:30.5000000“g”: 常规短格式(该说明符仅输出需要的内容。 它区分区域性并采用[-][d':']h':'mm':'ss[.FFFFFFF]形式。)New TimeSpan(1, 3, 16, 50, 500) -> 1:3:16:50.5 (en-US)
New TimeSpan(1, 3, 16, 50, 500) -> 1:3:16:50,5 (fr-FR)
New TimeSpan(1, 3, 16, 50, 599) -> 1:3:16:50.599 (en-US)
New TimeSpan(1, 3, 16, 50, 599) -> 1:3:16:50,599 (fr-FR)“G”: 常规长格式(此说明符始终输出天数和七个小数位。 它区分区域性并采用[-]d':'hh':'mm':'ss.fffffff形式。)New TimeSpan(18, 30, 0) -> 0:18:30:00.0000000 (en-US)
New TimeSpan(18, 30, 0) -> 0:18:30:00,0000000 (fr-FR)
using System;
public class Example
{
public static void Main()
{
TimeSpan duration = new TimeSpan(1, 12, 23, 62);
string output = "Time of Travel: " + duration.ToString("c");
Console.WriteLine(output);
Console.WriteLine("Time of Travel: {0:c}", duration);
}
}
// The example displays the following output:
// Time of Travel: 1.12:24:02
// Time of Travel: 1.12:24:02自定义 TimeSpan 格式字符串
“d”,“%d”: 时间间隔中的整天数。new TimeSpan(6, 14, 32, 17, 685):
%d--> "6"d\.hh\:mm--> "6.14:32""dd"-"dddddddd": 时间间隔中的整天数,根据需要使用前导零填充。new TimeSpan(6, 14, 32, 17, 685):
ddd--> "006"dd\.hh\:mm--> "06.14:32"“h”,“%h”: 时间间隔中不计为天数一部分的整小时数。 一位数小时数没有前导零。new TimeSpan(6, 14, 32, 17, 685):
%h--> "14"hh\:mm--> "14:32"“hh”: 时间间隔中不计为天数一部分的整小时数。 一位数小时具有前导零。new TimeSpan(6, 14, 32, 17, 685):
hh--> "14"
new TimeSpan(6, 8, 32, 17, 685):hh--> 08“m”,“%m”: 时间间隔中不包含在小时或天数中的整分钟数。 一位数分钟数没有前导零。new TimeSpan(6, 14, 8, 17, 685):
%m--> "8"h\:m--> "14:8"“mm”: 时间间隔中不包含在小时或天数中的整分钟数。 一位数分钟具有前导零。new TimeSpan(6, 14, 8, 17, 685):
mm--> "08"
new TimeSpan(6, 8, 5, 17, 685):d\.hh\:mm\:ss--> 6.08:05:17“s”,“%s”: 时间间隔中不包含在小时、天数或分钟中的整秒数。 一位数秒数没有前导零。TimeSpan.FromSeconds(12.965):
%s--> 12s\.fff--> 12.965“ss”: 时间间隔中不包含在小时、天数或分钟中的整秒数。 一位数秒具有前导零。TimeSpan.FromSeconds(6.965):
ss--> 06ss\.fff--> 06.965“f”,“%f”: 时间间隔中的十分之几秒。TimeSpan.FromSeconds(6.895):
f--> 8ss\.f--> 06.8“ff”: 时间间隔中的百分之几秒。TimeSpan.FromSeconds(6.895):
ff--> 89ss\.ff--> 06.89“fff”: 时间间隔中的毫秒。TimeSpan.FromSeconds(6.895):
fff--> 895ss\.fff--> 06.895“ffff”: 时间间隔中的万分之几秒。TimeSpan.Parse("0:0:6.8954321"):
ffff--> 8954ss\.ffff--> 06.8954“fffff”: 时间间隔中的十万分之几秒。TimeSpan.Parse("0:0:6.8954321"):
fffff--> 89543ss\.fffff--> 06.89543“ffffff”: 时间间隔中的百万分之几秒。TimeSpan.Parse("0:0:6.8954321"):
ffffff--> 895432ss\.ffffff--> 06.895432“fffffff”: 时间间隔中的千万分之几秒(或小数时钟周期)。TimeSpan.Parse("0:0:6.8954321"):
fffffff--> 8954321ss\.fffffff--> 06.8954321“F”,“%F”: 时间间隔中的十分之几秒。 如果该数字为零,则不显示任何内容。TimeSpan.Parse("00:00:06.32"):
%F--> 3
TimeSpan.Parse("0:0:3.091"):ss\.F--> 03.“FF”: 时间间隔中的百分之几秒。 不包含任何小数尾随零或两个零位。TimeSpan.Parse("00:00:06.329"):
FF--> 32
TimeSpan.Parse("0:0:3.101"):ss\.FF--> 03.1“FFF”: 时间间隔中的毫秒。 不包含任何小数尾随零。TimeSpan.Parse("00:00:06.3291"):
FFF--> 329
TimeSpan.Parse("0:0:3.1009"):ss\.FFF--> 03.1“FFFF”: 时间间隔中的万分之几秒。 不包含任何小数尾随零。TimeSpan.Parse("00:00:06.32917"):
FFFFF--> 3291
TimeSpan.Parse("0:0:3.10009"):ss\.FFFF--> 03.1“FFFFF”: 时间间隔中的十万分之几秒。 不包含任何小数尾随零。TimeSpan.Parse("00:00:06.329179"):
FFFFF--> 32917
TimeSpan.Parse("0:0:3.100009"):ss\.FFFFF--> 03.1“FFFFFF”: 时间间隔中的百万分之几秒。 不显示任何小数尾随零。TimeSpan.Parse("00:00:06.3291791"):
FFFFFF--> 329179
TimeSpan.Parse("0:0:3.1000009"):ss\.FFFFFF--> 03.1“FFFFFFF”: 时间间隔中的千万分之几秒。 不显示任何小数尾随零或七个零。TimeSpan.Parse("00:00:06.3291791"):
FFFFFF--> 3291791
TimeSpan.Parse("0:0:3.1900000"):ss\.FFFFFF--> 03.19'string ': 文本字符串分隔符。new TimeSpan(14, 32, 17):
hh':'mm':'ss--> "14:32:17"\: 转义字符。new TimeSpan(14, 32, 17):
hh\:mm\:ss--> "14:32:17"任何其他字符: 任何其他未转义字符会解释为自定义格式说明符。new TimeSpan(14, 32, 17):
hh\:mm\:ss--> "14:32:17"
using System;
public class Example
{
public static void Main()
{
TimeSpan duration = new TimeSpan(1, 12, 23, 62);
string output = null;
output = "Time of Travel: " + duration.ToString("%d") + " days";
Console.WriteLine(output);
output = "Time of Travel: " + duration.ToString(@"dd\.hh\:mm\:ss");
Console.WriteLine(output);
Console.WriteLine("Time of Travel: {0:%d} day(s)", duration);
Console.WriteLine("Time of Travel: {0:dd\\.hh\\:mm\\:ss} days", duration);
}
}
// The example displays the following output:
// Time of Travel: 1 days
// Time of Travel: 01.12:24:02
// Time of Travel: 1 day(s)
// Time of Travel: 01.12:24:02 days文章内容主要整理自 MSDN