C# DateTime日期格式化

在 C# 中,DateTime 类型提供了多种方式来格式化日期和时间。你可以使用标准格式字符串、自定义格式字符串或者 ToString 方法来将 DateTime 对象转换为指定格式的字符串。

1. 标准日期和时间格式字符串

C# 中的 DateTime 类型提供了一些标准的格式字符串,这些格式字符串适用于常见的日期和时间输出。

常见的标准格式

  • d:短日期格式(MM/dd/yyyy
  • D:长日期格式(dddd, MMMM dd, yyyy
  • t:短时间格式(hh:mm tt
  • T:长时间格式(hh:mm:ss tt
  • f:完整日期时间(dddd, MMMM dd, yyyy hh:mm tt
  • F:完整日期时间(dddd, MMMM dd, yyyy hh:mm:ss tt
  • g:常规日期时间(MM/dd/yyyy hh:mm tt
  • G:常规日期时间(MM/dd/yyyy hh:mm:ss tt
  • M:月份和日期(MMMM dd
  • Y:年份和月份(MMMM yyyy

示例

less 复制代码
DateTime currentDate = DateTime.Now;

Console.WriteLine(currentDate.ToString("d"));  // 短日期格式
Console.WriteLine(currentDate.ToString("D"));  // 长日期格式
Console.WriteLine(currentDate.ToString("t"));  // 短时间格式
Console.WriteLine(currentDate.ToString("T"));  // 长时间格式
Console.WriteLine(currentDate.ToString("f"));  // 完整日期时间(短时间)
Console.WriteLine(currentDate.ToString("F"));  // 完整日期时间(长时间)
Console.WriteLine(currentDate.ToString("g"));  // 常规日期时间(短时间)
Console.WriteLine(currentDate.ToString("G"));  // 常规日期时间(长时间)
Console.WriteLine(currentDate.ToString("M"));  // 月日格式
Console.WriteLine(currentDate.ToString("Y"));  // 年月格式

2. 自定义日期和时间格式字符串

你可以使用自定义格式字符串来精确控制输出的日期时间格式。自定义格式字符串由日期时间字符组成,并可以自由组合。

常用日期时间字符

  • yyyy:四位年份(例如,2025)
  • MM:两位月份(01-12)
  • dd:两位日期(01-31)
  • hh:两位小时(01-12)
  • HH:24小时制小时(00-23)
  • mm:两位分钟(00-59)
  • ss:两位秒钟(00-59)
  • tt:AM/PM
  • fff:毫秒(000-999)

示例

arduino 复制代码
DateTime currentDate = DateTime.Now;

Console.WriteLine(currentDate.ToString("yyyy-MM-dd"));   // 输出格式:2025-07-28
Console.WriteLine(currentDate.ToString("HH:mm:ss"));     // 输出格式:14:30:59
Console.WriteLine(currentDate.ToString("yyyy/MM/dd HH:mm"));  // 输出格式:2025/07/28 14:30
Console.WriteLine(currentDate.ToString("ddd, dd MMM yyyy"));  // 输出格式:Mon, 28 Jul 2025
Console.WriteLine(currentDate.ToString("yyyy-MM-dd hh:mm:ss tt")); // 输出格式:2025-07-28 02:30:59 PM

3. 使用 ToString()CultureInfo 指定区域格式

你还可以通过 CultureInfo 来指定特定的地区格式化。

示例

ini 复制代码
using System.Globalization;

DateTime currentDate = DateTime.Now;
CultureInfo cultureInfo = new CultureInfo("en-US");

Console.WriteLine(currentDate.ToString("D", cultureInfo));  // 输出:Monday, July 28, 2025 (美国格式)
cultureInfo = new CultureInfo("de-DE");
Console.WriteLine(currentDate.ToString("D", cultureInfo));  // 输出:Montag, 28. Juli 2025 (德国格式)

4. DateTime 格式化示例:展示不同的输出

less 复制代码
DateTime dt = new DateTime(2025, 7, 28, 14, 30, 59);

// 常见日期时间格式
Console.WriteLine(dt.ToString("d")); // 07/28/2025
Console.WriteLine(dt.ToString("D")); // Monday, July 28, 2025
Console.WriteLine(dt.ToString("f")); // Monday, July 28, 2025 2:30 PM
Console.WriteLine(dt.ToString("F")); // Monday, July 28, 2025 2:30:59 PM

// 自定义格式
Console.WriteLine(dt.ToString("yyyy-MM-dd")); // 2025-07-28
Console.WriteLine(dt.ToString("HH:mm:ss")); // 14:30:59
Console.WriteLine(dt.ToString("yyyy/MM/dd HH:mm")); // 2025/07/28 14:30

// 使用 24小时制
Console.WriteLine(dt.ToString("HH:mm:ss")); // 14:30:59

// AM/PM 格式
Console.WriteLine(dt.ToString("hh:mm:ss tt")); // 02:30:59 PM

结论

DateTime 类型的格式化方法非常灵活,标准格式字符串适用于常见情况,而自定义格式字符串允许你精确地控制日期和时间的显示格式。此外,结合 CultureInfo 可以根据不同的地区展示不同的格式。掌握这些技巧,你可以方便地处理和显示日期时间信息。 www.52runoob.com/archives/48...

相关推荐
葫芦和十三3 小时前
图解 MongoDB 05|文档模型设计:内嵌 vs 引用,反范式不是免费午餐
后端·mongodb·agent
不能放弃治疗6 小时前
单 Agent 实现模式
后端
IT_陈寒8 小时前
Redis内存爆了,原来我漏掉了这个致命配置
前端·人工智能·后端
fliter9 小时前
最后一块拼图:用 bitvec 构造 IPv4 包,真正做出自己的 Ping
后端
fliter10 小时前
用 Rust 解析并生成 ICMP 包:checksum、nom 与 cookie-factory
后端
蝎子莱莱爱打怪10 小时前
XZLL-IM干货系列 03|消息 ID 设计:一个 UUID 搞不定的事,我用两个 ID 解决了
后端·面试·开源
fliter10 小时前
从 panic 到 Result:用 Rust 重新整理一个 ping 项目的错误处理
后端
森蓝情丶11 小时前
我给 AI 搭了个法庭:一个前端仔的 LangGraph 实战全记录
前端·后端
JensCS猿11 小时前
从 Spring Boot 回看 SSM 框架:手动挡与自动挡的驾驶哲学
后端
爱勇宝11 小时前
干了近 8 年,一夜之间被裁:AI 时代,程序员最该害怕的不是 AI
前端·后端·程序员