C# 中 DateTime 格式化最常用方式是 ToString()方法,支持预定义标准格式符(如 "d" 短日期、"D" 长日期)和自定义格式字符串(如 ”yyyy-MM-dd HH:mm:ss”),并可通过 CultureInfo 指定文化信息确保本地化一致性。

C# 中对 DateTime 进行格式化,最常用、最直接的方式就是调用 ToString() 方法,并传入格式字符串或格式说明符。它灵活、高效,且支持自定义和预设格式。
使用预定义标准格式说明符
标准格式说明符是单个字母(如 "d"、"D"、"t"),对应系统区域设置下的常见日期时间样式:
-
dt.ToString("d")→ 短日期(如:2024/5/20) -
dt.ToString("D")→ 长日期(如:2024 年 5 月 20 日 星期一) -
dt.ToString("t")→ 短时间(如:14:30) -
dt.ToString("T")→ 长时间(如:14:30:25) -
dt.ToString("f")→ 全日期 + 短时间(如:2024 年 5 月 20 日 星期一 14:30) -
dt.ToString("F")→ 全日期 + 长时间(含秒,如:2024 年 5 月 20 日 星期一 14:30:25) -
dt.ToString("g")→ 常规日期 + 短时间(如:2024/5/20 14:30) -
dt.ToString("G")→ 常规日期 + 长时间(如:2024/5/20 14:30:25)
使用自定义格式字符串
用字母组合精确控制每个部分,大小写敏感,常用占位符有:
-
"yyyy"→ 4 位年份(2024),"yy"→ 2 位(24) -
"MM"→ 补零月(05),"M"→ 不补零(5) -
"dd"→ 补零日,"d"→ 不补零 -
"HH"→ 24 小时制小时(14),"hh"→ 12 小时制(02) -
"mm"→ 分钟,"ss"→ 秒,"fff"→ 毫秒(三位) -
"tt"→ AM/PM(英文),中文环境下建议用" 上午 "/" 下午 "文字字面量 - 文字内容用单引号包裹,如:
"yyyy 年 'M' 月 'd' 日 HH:mm:ss"→ 2024 年 M 月 20 日 14:30:25
指定文化信息(CultureInfo)避免 本地化 偏差
不指定时默认用当前线程文化(可能影响星期、月份名称、分隔符)。如需固定输出(比如始终英文或始终中文),显式传入:
-
dt.ToString("D", new CultureInfo("en-US"))→ Monday, May 20, 2024 -
dt.ToString("D", new CultureInfo("zh-CN"))→ 2024 年 5 月 20 日 星期一 - 也可用
CultureInfo.InvariantCulture获取与区域无关的英文格式(如 ISO 标准)
安全格式化:避免异常的推荐写法
直接调用 ToString(string) 不会抛异常,但若格式字符串非法(如错用双引号、未闭合引号),会在运行时报错。建议:
- 优先使用标准格式符(
"G"、"s"等)——安全、简洁、可读性高 - 自定义格式尽量用字符串字面量,避免拼接;调试时可用
DateTime.Now.ToString("o")(往返格式,ISO 8601)快速验证 - 需要兼容多种语言时,统一管理格式字符串,或封装为扩展方法
基本上就这些。掌握标准符 + 几个关键自定义符号(yyyy、MM、dd、HH、mm、ss),再注意文化上下文,日常开发已完全够用。