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),再注意文化上下文,日常开发已完全够用。
