文章目錄
- 一、格式說明符
- 1.1、數字格式說明符(適用于數值類型:int, double, decimal 等)
- 1. 標準數字格式
- 2. 自定義數字格式
- 1.2、日期時間格式說明符(適用于 DateTime, DateTimeOffset)
- 1. 標準日期時間格式
- 2. 自定義日期時間格式
- 1.3、枚舉格式說明符(適用于 enum 類型)
- 1.4、組合格式示例
- 二、
- 三、
- 四、
一、格式說明符
C# 中的格式說明符用于格式化各種數據類型的字符串表示,主要分為以下幾類,按數據類型分類列舉并提供組合示例:
1.1、數字格式說明符(適用于數值類型:int, double, decimal 等)
1. 標準數字格式
-
C
/c
:貨幣格式(自動添加貨幣符號,受當前文化影響)Console.WriteLine($"{1234.56:C}"); // ¥1,234.56(中文環境)
-
D
/d
:十進制整數格式(指定位數時不足補0)Console.WriteLine($"{123:D5}"); // 00123(固定5位)
-
E
/e
:科學計數法(E為大寫,e為小寫)Console.WriteLine($"{1234.56:E3}"); // 1.235E+003(保留3位小數)
-
F
/f
:固定小數位格式Console.WriteLine($"{1234.567:F2}"); // 1234.57(保留2位小數)
-
G
/g
:通用格式(自動選擇最簡潔的表示)Console.WriteLine($"{1234.567:G4}"); // 1235(總位數4位,四舍五入)
-
N
/n
:帶千分位分隔符的數字Console.WriteLine($"{1234567:N2}"); // 1,234,567.00
-
P
/p
:百分比格式(數值乘以100并加%)Console.WriteLine($"{0.123:P1}"); // 12.3%(保留1位小數)
-
X
/x
:十六進制格式(X大寫,x小寫)Console.WriteLine($"{255:X2}"); // FF(2位大寫) Console.WriteLine($"{255:x4}"); // 00ff(4位小寫)
2. 自定義數字格式
0
:占位符(位數不足補0,超出則原樣顯示)#
:占位符(位數不足不補0,超出則原樣顯示).
:小數點,
:千分位分隔符(可重復表示比例縮放,如,,
表示除以100萬)%
:百分比(數值乘以100)\
:轉義字符(顯示特殊符號)
示例:
// 整數部分至少3位,小數部分固定2位
Console.WriteLine($"{12.3:000.00}"); // 012.30// 整數部分可選,小數部分最多2位(不補0)
Console.WriteLine($"{1234.567:###.##}"); // 1234.57// 千分位分隔+比例縮放(除以1000,顯示為"千")
Console.WriteLine($"{1234567:###,}k"); // 1235k(四舍五入到千位)// 混合百分比和自定義格式
Console.WriteLine($"{0.1234:00.0%}"); // 12.3%
1.2、日期時間格式說明符(適用于 DateTime, DateTimeOffset)
1. 標準日期時間格式
d
:短日期(如2023/10/05
)D
:長日期(如2023年10月5日
)t
:短時間(如14:30
)T
:長時間(如14:30:45
)f
:完整日期+短時間(如2023年10月5日 14:30
)F
:完整日期+長時間(如2023年10月5日 14:30:45
)g
:常規日期+短時間(如2023/10/05 14:30
)G
:常規日期+長時間(如2023/10/05 14:30:45
)s
:可排序日期時間(如2023-10-05T14:30:45
,ISO 8601)u
:UTC可排序時間(如2023-10-05 14:30:45Z
)
示例:
DateTime dt = new DateTime(2023, 10, 5, 14, 30, 45);
Console.WriteLine($"{dt:d}"); // 10/5/2023
Console.WriteLine($"{dt:G}"); // 10/5/2023 14:30:45
2. 自定義日期時間格式
y
/yy
/yyy
/yyyy
:年(如23
/2023
)M
/MM
:月(1
-12
/01
-12
)d
/dd
:日(1
-31
/01
-31
)h
/hh
:12小時制時(1
-12
/01
-12
)H
/HH
:24小時制時(0
-23
/00
-23
)m
/mm
:分(0
-59
/00
-59
)s
/ss
:秒(0
-59
/00
-59
)f
/ff
/fff
:毫秒(1位/2位/3位)t
:上午/下午(A
/P
)z
/zz
/zzz
:時區偏移(如+08
/+08:00
)
示例:
DateTime dt = new DateTime(2023, 10, 5, 14, 30, 45, 123);
// 格式:年-月-日 時:分:秒.毫秒 時區
Console.WriteLine($"{dt:yyyy-MM-dd HH:mm:ss.fff zzz}");
// 輸出:2023-10-05 14:30:45.123 +08:00
1.3、枚舉格式說明符(適用于 enum 類型)
G
/g
:默認(顯示枚舉名, Flags 組合時用逗號分隔)F
/f
:Flags 組合時強制顯示所有名稱(即使未標記 Flags)D
/d
:顯示枚舉的基礎數值X
/x
:顯示基礎數值的十六進制形式
示例:
[Flags]
enum MyEnum { A = 1, B = 2, C = 4 }
MyEnum val = MyEnum.A | MyEnum.C;Console.WriteLine($"{val:G}"); // A, C(名稱組合)
Console.WriteLine($"{val:D}"); // 5(基礎數值)
Console.WriteLine($"{val:X}"); // 00000005(十六進制)
1.4、組合格式示例
- 數字+日期組合:
var data = new { Amount = 1234.56, Date = new DateTime(2023, 10, 5) };
Console.WriteLine($"{data.Date:yyyy-MM-dd} 交易金額:{data.Amount:C2}");
// 輸出:2023-10-05 交易金額:¥1,234.56
- 自定義數字+轉義字符:
double ratio = 0.7532;
Console.WriteLine($"完成率:{ratio:00.00%}({ratio:0.##})");
// 輸出:完成率:75.32%(0.75)
- 時間+毫秒精度:
DateTime dt = DateTime.Now;
Console.WriteLine($"當前時間:{dt:HH:mm:ss.fff}");
// 輸出:當前時間:15:42:36.789
說明
- 格式說明符區分大小寫(如
X
和x
分別對應大小寫十六進制)。 - 可通過
IFormatProvider
自定義文化(如指定CultureInfo.InvariantCulture
避免地區差異)。 - 組合使用時,多個格式說明符需按類型規則拆分(如數字和日期需分別指定格式)。