C# string.Format
一,DateTime
//date time 2008-01-13 16:05:07.123 DateTime dt = new DateTime(2008, 1, 13, 16, 5, 7, 123); String.Format("{0:y yy yyy yyyy}", dt); // "8 08 2008 2008" year String.Format("{0:M MM MMM MMMM}", dt); // "1 01 一月 一月" month String.Format("{0:d dd ddd dddd}", dt); // "13 13 周日 星期日" day String.Format("{0:h hh H HH}", dt); // "4 04 16 16" hour 12/24 String.Format("{0:m mm}", dt); // "5 05" minute String.Format("{0:s ss}", dt); // "7 07" second String.Format("{0:f ff fff ffff}", dt); // "1 12 123 1230" sec.fraction String.Format("{0:F FF FFF FFFF}", dt); // "1 12 123 123" without zeroes String.Format("{0:t tt}", dt); // "下 下午" A.M. or P.M. String.Format("{0:z zz zzz}", dt); // "+8 +08 +08:00" time zone
Following table shows patterns defined in DateTimeFormatInfo and their values for en-US culture. First column contains format specifiers for the String.Format method.
Specifier | DateTimeFormatInfo property | Pattern value (for en-US culture) |
---|---|---|
t |
ShortTimePattern | h:mm tt |
d |
ShortDatePattern | M/d/yyyy |
T |
LongTimePattern | h:mm:ss tt |
D |
LongDatePattern | dddd, MMMM dd, yyyy |
f |
(combination of D and t ) |
dddd, MMMM dd, yyyy h:mm tt |
F |
FullDateTimePattern | dddd, MMMM dd, yyyy h:mm:ss tt |
g |
(combination of d and t ) |
M/d/yyyy h:mm tt |
G |
(combination of d and T ) |
M/d/yyyy h:mm:ss tt |
m , M |
MonthDayPattern | MMMM dd |
y , Y |
YearMonthPattern | MMMM, yyyy |
r , R |
RFC1123Pattern | ddd, dd MMM yyyy HH':'mm':'ss 'GMT' (*) |
s |
SortableDateTimePattern | yyyy'-'MM'-'dd'T'HH':'mm':'ss (*) |
u |
UniversalSortableDateTimePattern | yyyy'-'MM'-'dd HH':'mm':'ss'Z' (*) |
(*) = culture independent |
Following examples show usage of standard format specifiers in String.Format method and the resulting output.
1 String.Format("{0:t}", dt); // "16:05" ShortTime 2 String.Format("{0:d}", dt); // "2008/1/13" ShortDate 3 String.Format("{0:T}", dt); // "16:05:07" LongTime 4 String.Format("{0:D}", dt); // "2008年1月13日" LongDate 5 String.Format("{0:f}", dt); // "2008年1月13日 16:05" LongDate+ShortTime 6 String.Format("{0:F}", dt); // "2008年1月13日 16:05:07" FullDateTime 7 String.Format("{0:g}", dt); // "2008/1/13 16:05" ShortDate+ShortTime 8 String.Format("{0:G}", dt); // "2008/1/13 16:05:07" ShortDate+LongTime 9 String.Format("{0:m}", dt); // "1月13日" MonthDay 10 String.Format("{0:y}", dt); // "2008年1月" YearMonth 11 String.Format("{0:r}", dt); // "Sun, 13 Jan 2008 16:05:07 GMT" RFC1123 12 String.Format("{0:s}", dt); // "2008-01-13T16:05:07" SortableDateTime 13 String.Format("{0:u}", dt); // "2008-01-13 16:05:07Z" UniversalSortableDateTime
二,自定义数字格式字符串
1,The "0" custom format specifier("0"自定义说明符)
用零作占位符符号,比较简单,如果待设置的值在格式字符串中出现零的位置有数字,则显示数字;否则用零占位.(通过value.ToString()和String.Format()的效果一样),如
1 double value; 2 value = 123; 3 String.Format("{0:00000}", value); 4 //display:00123 5 6 value = 1.2; 7 String.Format(System.Globalization.CultureInfo.InvariantCulture,"{0:0.00}", value); 8 //display:1.20 9 10 value = 1234567890; 11 String.Format(System.Globalization.CultureInfo.InvariantCulture,"{0:0,0}", value); 12 //display:1,234,567,890
2,The "#" custom format specifier(#”自定义格式说明符)
用数字作占位符符号,当待设置的值在对应的位置有位置时,和 "0"自定义说明符 一样,不同的是,如果没有数字,则不存储任何值.如
1 value = 1.2; 2 String.Format(CultureInfo.InvariantCulture, "{0:#.##}", value); 3 // Displays 1.2
3,","自定义说明符
如果在整数格式串的数字占位符(0或#)之间指定一个或多个逗号,则在整数部分中每个数字组之间插入一个逗号,如
1 double value = 1234567890; 2 String.Format(CultureInfo.InvariantCulture, "{0:#,#}", value); 3 // Displays 1,234,567,890
以下为常用实例:
格式说明符 |
名称 |
说明 |
示例 |
---|---|---|---|
“0” |
零占位符 |
用对应的数字(如果存在)替换零;否则,将在结果字符串中显示零。 有关详细信息,请参阅“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 0.45678 ("0.00", fr-FR) -> 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”字符后面的零的数目确定指数中的最小位数。 加号 (+) 指示符号字符总是置于指数前面。 减号 (-) 指示符号字符仅置于负指数前面。 有关详细信息,请参阅“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 ° |
标准格式数字说明符:
格式说明符 |
名称 |
说明 |
示例 |
---|---|---|---|
“C”或“c” |
Currency |
结果:货币值。 受以下类型支持:所有数值类型。 精度说明符:小数位数。 默认值精度说明符:由 System.Globalization.NumberFormatInfo 定义。 更多信息:货币(“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” |
小数 |
结果:整型数字,负号可选。 受以下类型支持:仅整型。 精度说明符:最小位数。 默认值精度说明符:所需的最小位数。 更多信息:十进制(“D”)格式说明符。 |
1234 ("D") -> 1234 -1234 ("D6") -> -001234 |
“E”或“e” |
指数(科学型) |
结果:指数记数法。 受以下类型支持:所有数值类型。 精度说明符:小数位数。 默认值精度说明符:6。 更多信息:指数(“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” |
定点 |
结果:整数和小数,负号可选。 受以下类型支持:所有数值类型。 精度说明符:小数位数。 默认值精度说明符:由 System.Globalization.NumberFormatInfo 定义。 更多信息:定点(“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” |
常规 |
结果:最紧凑的定点表示法或科学记数法。 受以下类型支持:所有数值类型。 精度说明符:有效位数。 默认值精度说明符:取决于数值类型。 更多信息:常规(“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” |
数字 |
结果:整数和小数、组分隔符和小数分隔符,负号可选。 受以下类型支持:所有数值类型。 精度说明符:所需的小数位数。 默认值精度说明符:由 System.Globalization.NumberFormatInfo 定义。 更多信息:数字(“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 并显示百分比符号的数字。 受以下类型支持:所有数值类型。 精度说明符:所需的小数位数。 默认值精度说明符:由 System.Globalization.NumberFormatInfo 定义。 更多信息:百分比(“P”)格式说明符。 |
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” |
往返过程 |
结果:可以往返至相同数字的字符串。 受以下类型支持:Single、Double 和 BigInteger。 精度说明符:忽略。 更多信息:往返过程(“R”)格式说明符。 |
123456789.12345678 ("R") -> 123456789.12345678 -1234567890.12345678 ("R") -> -1234567890.1234567 |
“X”或“x” |
十六进制 |
结果:十六进制字符串。 受以下类型支持:仅整型。 精度说明符:结果字符串中的位数。 更多信息:十六进制(“X”)格式说明符。 |
255 ("X") -> FF -1 ("x") -> ff 255 ("x4") -> 00ff -1 ("X4") -> 00FF |
任何其他单个字符 |
未知说明符 |
结果:在运行时引发 FormatException。 |
相关文章
- C# 字符串string与char数组互转!
- C#_正则表达式
- c# 创建socket客户端
- c# string数组的定义和赋值
- C#将字母转换为全部大写或小写
- c#:无法将类型为“System.DBNull”的对象强制转换为类型“System.String”
- 经验总结37--C#事件2
- C# Enum,Int,String的互相转换
- C# list介绍
- C#操作Mongodb
- C# 与JAVA 的RSA 加密解密交互,互通,C#使用BouncyCastle来实现私钥加密,公钥解密的方法
- c# 面向方面编程
- Silverlight 5(C#)初探
- c# DateTime和string相互转换 DateTime获取星期几
- C#中STRING 怎么转换成 LONG ?
- .NET(C#)时间日期字符串(String)转换成Datetime异常报错问题
- [C#] 使用 StackExchange.Redis 封装属于自己的 RedisHelper
- [C#] string 与 String,大 S 与小 S 之间没有什么不可言说的秘密
- 2019-11-29-C#-在-8.0-对比-string-和-string_-的类型
- 2019-8-31-C#-遍历枚举
- 2019-5-21-C#-在-构造函数添加-CallerMemberName-会怎样
- C# 通过 probing 指定 dll 寻找文件夹
- C# 反射调用私有事件
- [C#6] 4-string 插值
- [asp.net]C#实现json的序列化和反序列化