首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> C# 入門

.NET FormatString 格式化字串完整速查表:日期、數字、自訂格式

     編輯:C# 入門

前言

ToString("format")、string.Format、Console.WriteLine、插值字串 $"{value:format}" 都依賴 **.NET 格式化字串**。本文整理標準日期/時間、數字格式代碼、自訂格式字元、文化特性影響與實用範例,供快速查閱。

一、標準日期/時間格式 (單一字元)

代碼名稱範例 (en-US)範例 (zh-TW)說明
d短日期6/15/20232023/6/15DateTimeFormatInfo.ShortDatePattern
D長日期Thursday, June 15, 20232023年6月15日LongDatePattern
t短時間3:45 PM下午 03:45ShortTimePattern
T長時間3:45:30 PM下午 03:45:30LongTimePattern
f完整日期短時間Thursday, June 15, 2023 3:45 PM2023年6月15日 下午 03:45長日期 + 短時間
F完整日期長時間Thursday, June 15, 2023 3:45:30 PM2023年6月15日 下午 03:45:30FullDateTimePattern
g一般日期短時間6/15/2023 3:45 PM2023/6/15 下午 03:45短日期 + 短時間
G一般日期長時間6/15/2023 3:45:30 PM2023/6/15 下午 03:45:30短日期 + 長時間
M, m月日June 156月15日MonthDayPattern
R, rRFC1123Thu, 15 Jun 2023 15:45:30 GMT同上固定格式、UTC、不可變
s可排序 (ISO 8601)2023-06-15T15:45:30同上SortableDateTimePattern、無時區
u通用可排序2023-06-15 15:45:30Z同上UniversalSortableDateTimePattern、UTC
U完整通用日期時間Thursday, June 15, 2023 11:45:30 PM2023年6月15日 下午 11:45:30轉為 UTC 後套用 F 格式
Y, y年月June 20232023年6月YearMonthPattern
所有標準格式受 CultureInfo.CurrentCulture 影響。指定文化:dt.ToString("D", new CultureInfo("en-US"))。

二、標準數字格式

代碼名稱範例 (1234.56)精度說明符
C, c貨幣$1,234.56 / ¥1,234.56小數位數:C2 (預設 2)
D, d十進位 (僅整數)0001234 (D8)最少位數:D8 左補零
E, e科學記號1.234560E+003 / 1.234560e+003小數位數:E3
F, f定點1234.56 (F2)小數位數:F3 → 1234.560
G, g一般 (預設)1234.56有效數字:G5 → 1234.6
N, n數字 (含千分位)1,234.56小數位數:N0 → 1,235
P, p百分比123,456.00% (值乘 100)小數位數:P2
R, r來回 (Round-trip)1234.56 (保證 Parse 回相同值)忽略精度,Double 17 位、Single 9 位
X, x十六進位 (僅整數)4D2 / 4d2最少位數:X8 → 000004D2

預設精度對照 (G 格式)

型別預設精度
Byte/SByte3
Int16/UInt165
Int32/UInt3210
Int64/UInt6419
Single7
Double15
Decimal29

三、自訂日期/時間格式字元

字元意義範例
y年 (1-2 位)23
yy年 (2 位)23
yyy年 (最少 3 位)2023
yyyy年 (4 位)2023
M月 (1-2 位)6
MM月 (2 位)06
MMM月縮寫Jun / 6月
MMMM月全名June / 六月
d日 (1-2 位)15
dd日 (2 位)15
ddd星期縮寫Thu / 週四
dddd星期全名Thursday / 星期四
h12 小時 (1-2 位)3
hh12 小時 (2 位)03
H24 小時 (1-2 位)15
HH24 小時 (2 位)15
m分 (1-2 位)45
mm分 (2 位)45
s秒 (1-2 位)30
ss秒 (2 位)30
f~fffffff秒小數 (1-7 位).5 / .50 / .500...
tAM/PM 首字P / 午
ttAM/PM 全稱PM / 下午
K時區+08:00 / Z
z時區時差 (小時)+8
zz時區時差 (小時 2 位)+08
zzz時區時差 (時:分)+08:00
:時間分隔符 (文化特性):
/日期分隔符 (文化特性)/
'text' 或 "text"常值字串'Year: 'yyyy → Year: 2023
\\跳脫字元\\y\\y → yy

常用自訂格式範例


DateTime now = DateTime.Now; // 2023-06-15 15:45:30.123
now.ToString("yyyy-MM-dd")           // 2023-06-15
now.ToString("yyyy/MM/dd HH:mm:ss")  // 2023/06/15 15:45:30
now.ToString("yyyy年MM月dd日")        // 2023年06月15日
now.ToString("HH:mm:ss.fff")         // 15:45:30.123
now.ToString("yyyy-MM-ddTHH:mm:ssK") // 2023-06-15T15:45:30+08:00 (ISO 8601 含時區)

四、自訂數字格式字元

字元名稱說明範例 (1234.56)
0零佔位符該位必須有數字,不足補 00000.00 → 1234.56
#數字佔位符有數字顯示,無則留空####.## → 1234.56
.小數點文化特性決定符號0.00 → 1234.56
,千分位/縮放每三位分組;連續兩個逗號除以 1,000,000#,##0 → 1,234
%百分比值乘 100 並加 %0% → 123456%
‰千分比值乘 1000 並加 ‰0‰ → 1234560‰
E0, E+0指數符號科學記號,E+ 顯示正負號0.00E+0 → 1.23E+3
;區隔符正數;負數;零 三段格式+0;-0;Zero
'text'常值單引號包住字面文字'$'0.00 → $1234.56
\\跳脫輸出單一字元\\#\\# → ##

區隔符進階:正數;負數;零


double pos = 123, neg = -45, zero = 0;
string fmt = "+0.00;-0.00;[Zero]";
pos.ToString(fmt)  // +123.00
neg.ToString(fmt)  // -45.00
zero.ToString(fmt) // [Zero]

五、文化特性與 IFormatProvider


var dt = DateTime.Now;
var num = 1234.56;

dt.ToString("D", new CultureInfo("en-US"));   // Thursday, June 15, 2023
dt.ToString("D", new CultureInfo("zh-TW"));   // 2023年6月15日
dt.ToString("D", CultureInfo.InvariantCulture); // 固定美式格式

num.ToString("C", new CultureInfo("zh-TW"));  // NT$1,234.56
num.ToString("C", new CultureInfo("en-US"));  // $1,234.56
num.ToString("C", CultureInfo.InvariantCulture); // ¤1,234.56 (通用貨幣符號)

六、實用組合範例


// Log 時間戳
$"{DateTime.Now:yyyy-MM-dd HH:mm:ss.fff} [INFO] Service started"

// 檔案名稱安全時間
$"backup_{DateTime.Now:yyyyMMdd_HHmmss}.bak"

// 金額顯示 (台幣)
$"{amount:N0} 元"           // 1,234 元
$"{amount:C0}"              // NT$1,234

// 百分比進度
$"{progress:P1}"            // 56.7%

// 十六進位位址
$"0x{address:X8}"           // 0x00401000

// 固定寬度對齊 (配合 PadLeft)
$"{id:D5}"                  // 00123

七、常見錯誤

錯誤寫法正確寫法原因
ToString("YYYY-MM-DD")ToString("yyyy-MM-dd")大寫 Y/D 非標準自訂字元
ToString("MM/DD/YYYY")ToString("MM/dd/yyyy")dd=日,DD 無意義
ToString("#,###.##")ToString("#,##0.##")個位數需用 0 保證顯示
ToString("P") 傳入 0.56 期望 56%傳入 0.56 即得 56.00% (已乘 100)P 格式會自動乘 100
string.Format("{0:C}", 123) 無貨幣符號指定 CultureInfoInvariantCulture 顯示 ¤

總結

掌握 **標準格式 (單一字元)** 解決 80% 需求,**自訂格式字元** 處理剩餘 20% 精細控制。記住:yyyy-MM-dd、HH:mm:ss、N2、C2、P1、X8 是最常用組合。指定 CultureInfo 確保跨環境一致性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved