C#怎么进行日期时间格式化 C# DateTime.ToString格式化方法

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

C# 中对 DateTime 进行格式化,最常用、最直接的方式就是调用 ToString() 方法,并传入格式字符串或格式说明符。它灵活、高效,且支持自定义和预设格式。

使用预定义标准格式说明符

标准格式说明符是单个字母(如 "d""D""t"),对应系统区域设置下的常见日期时间样式:

  • dt.ToString("d") → 短日期(如:2025/5/20
  • dt.ToString("D") → 长日期(如:2025年5月20日 星期一
  • dt.ToString("t") → 短时间(如:14:30
  • dt.ToString("T") → 长时间(如:14:30:25
  • dt.ToString("f") → 全日期+短时间(如:2025年5月20日 星期一 14:30
  • dt.ToString("F") → 全日期+长时间(含秒,如:2025年5月20日 星期一 14:30:25
  • dt.ToString("g") → 常规日期+短时间(如:2025/5/20 14:30
  • dt.ToString("G") → 常规日期+长时间(如:2025/5/20 14:30:25

使用自定义格式字符串

用字母组合精确控制每个部分,大小写敏感,常用占位符有:

  • "yyyy" → 4位年份(2025),"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"2025年M月20日 14:30:25

指定文化信息(CultureInfo)避免本地化偏差

不指定时默认用当前线程文化(可能影响星期、月份名称、分隔符)。如需固定输出(比如始终英文或始终中文),显式传入:

  • dt.ToString("D", new CultureInfo("en-US"))Monday, May 20, 2025
  • dt.ToString("D", new CultureInfo("zh-CN"))2025年5月20日 星期一
  • 也可用 CultureInfo.InvariantCulture 获取与区域无关的英文格式(如 ISO 标准)

安全格式化:避免异常的推荐写法

直接调用 ToString(string) 不会抛异常,但若格式字符串非法(如错用双引号、未闭合引号),会在运行时报错。建议:

  • 优先使用标准格式符("G""s" 等)——安全、简洁、可读性高
  • 自定义格式尽量用字符串字面量,避免拼接;调试时可用 DateTime.Now.ToString("o")(往返格式,ISO 8601)快速验证
  • 需要兼容多种语言时,统一管理格式字符串,或封装为扩展方法

基本上就这些。掌握标准符 + 几个关键自定义符号(yyyyMMddHHmmss),再注意文化上下文,日常开发已完全够用。