首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# DateTime 格式化完整指南:標準/自訂格式字串與常見陷阱

     編輯:關於C語言

核心陷阱:ToString() 無參數呼叫只回傳日期

DateTime.Now.ToString() 預設使用 G (一般日期時間) 格式,**但某些文化特性下僅顯示日期**。正確做法:明確指定格式字串,如 ToString("F") (完整日期長時間)、ToString("yyyy-MM-dd HH:mm:ss") (自訂)。

標準格式字串速查表

自訂格式字元完整對照(區分大小寫)

字元名稱範例輸出 (en-US)說明
d短日期10/15/2023ShortDatePattern
D長日期Sunday, October 15, 2023LongDatePattern
f完整日期短時間Sunday, October 15, 2023 3:30 PM長日期 + 短時間
F完整日期長時間Sunday, October 15, 2023 3:30:45 PMFullDateTimePattern (長日期+長時間)
g一般日期短時間10/15/2023 3:30 PM短日期 + 短時間
G一般日期長時間10/15/2023 3:30:45 PM短日期 + 長時間
t短時間3:30 PMShortTimePattern
T長時間3:30:45 PMLongTimePattern
s可排序日期時間2023-10-15T15:30:45ISO 8601 (本地時間)
u通用可排序2023-10-15 15:30:45ZUTC 格式 (不轉換時區)
U完整通用時間Sunday, October 15, 2023 11:30:45 PMUTC 長日期長時間
r/RRFC1123Sun, 15 Oct 2023 15:30:45 GMTHTTP 標頭標準
m/M月日October 15MonthDayPattern
y/Y年月October, 2023YearMonthPattern
模式意義範例
d日 (無前導零)5
dd日 (兩位數)05
ddd星期縮寫Sun
dddd星期全名Sunday
M月 (無前導零)10
MM月 (兩位數)10
MMM月份縮寫Oct
MMMM月份全名October
y年 (無紀元,無前導零)23
yy年 (兩位數)23
yyyy年 (四位數含紀元)2023
h12小時制 (無前導零)3
hh12小時制 (兩位數)03
H24小時制 (無前導零)15
HH24小時制 (兩位數)15
m分 (無前導零)30
mm分 (兩位數)30
s秒 (無前導零)45
ss秒 (兩位數)45
f~ffffff秒小數 1~7 位.123456
tAM/PM 首字元P
ttAM/PM 完整PM
z時區偏移 (小時)+8
zz時區偏移 (兩位數小時)+08
zzz時區偏移 (時:分)+08:00
g/gg紀元西元

實用範例

var dt = DateTime.Now;

// 常用格式
dt.ToString("yyyy-MM-dd");           // 2023-10-15
dt.ToString("yyyy-MM-dd HH:mm:ss");  // 2023-10-15 15:30:45
dt.ToString("yyyy/MM/dd HH:mm");     // 2023/10/15 15:30
dt.ToString("yyyy年MM月dd日");        // 2023年10月15日 (中文)

// 解析字串
DateTime.Parse("2023-10-15");
DateTime.ParseExact("20231015", "yyyyMMdd", CultureInfo.InvariantCulture);

最佳實務

  • 永遠指定 CultureInfo (如 InvariantCulture) 進行解析/格式化,避免伺服器地區設定導致 Bug
  • 資料庫存儲/傳輸統一使用 UTC (DateTime.UtcNow、"o" round-trip 格式)
  • 顯示給使用者時再轉換為本地時區與文化特性格式
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved