C# 获取指定格式时间字符串的方法汇总
作者:降薪码农
本文介绍了在C#中获取指定格式时间字符串的几种方法,包括使用`DateTime.ToString()`方法、`String.Format`或字符串插值、`DateTimeOffset`(带时区信息),并详细说明了常用格式模式和文化相关格式化,感兴趣的朋友跟随小编一起看看吧
在 C# 中获取指定格式的时间字符串有多种方式,以下是最常用的几种方法:
1️⃣ 使用 DateTime 的 ToString() 方法
DateTime now = DateTime.Now;
// 标准格式字符串
string shortDate = now.ToString("d"); // 2023/11/15
string longDate = now.ToString("D"); // 2023年11月15日
string shortTime = now.ToString("t"); // 14:30
string longTime = now.ToString("T"); // 14:30:45
string fullDateTime = now.ToString("F"); // 2023年11月15日 14:30:45
string sortableDateTime = now.ToString("s"); // 2023-11-15T14:30:45
string universalSortable = now.ToString("u"); // 2023-11-15 14:30:45Z
string roundTripDateTime = now.ToString("o"); // 2023-11-15T14:30:45.1234567+08:00
// 自定义格式字符串
string custom1 = now.ToString("yyyy-MM-dd"); // 2023-11-15
string custom2 = now.ToString("yyyy/MM/dd HH:mm:ss"); // 2023/11/15 14:30:45
string custom3 = now.ToString("yyyy年MM月dd日 dddd"); // 2023年11月15日 星期三
string custom4 = now.ToString("M/d/yyyy h:mm tt"); // 11/15/2023 2:30 PM
string custom5 = now.ToString("yyyy-MM-ddTHH:mm:ss.fff"); // 2023-11-15T14:30:45.1232️⃣ String.Format 或 字符串插值
DateTime now = DateTime.Now;
// String.Format 方式
string formatted1 = string.Format("{0:yyyy-MM-dd}", now);
string formatted2 = string.Format("{0:yyyy年MM月dd日 HH时mm分ss秒}", now);
// C# 6.0+ 字符串插值方式
string formatted3 = $"{now:yyyy-MM-dd HH:mm:ss}";
string formatted4 = $"{now:yyyy年MM月dd日 ddd HH:mm}";3️⃣ DateTimeOffset (带时区信息)
DateTimeOffset offsetNow = DateTimeOffset.Now;
// 带时区信息的格式
string offset1 = offsetNow.ToString("yyyy-MM-dd HH:mm:ss zzz"); // 2023-11-15 14:30:45 +08:00
string offset2 = offsetNow.ToString("o"); // ISO 8601格式 2023-11-15T14:30:45.1234567+08:004️⃣ 常用格式模式说明
| 格式模式 | 说明 | 示例 |
|---|---|---|
| yyyy | 四位年份 | 2023 |
| MM | 两位月份 | 11 (November) |
| dd | 两位日期 | 05 |
| HH | 24小时制的小时 | 14 (2 PM) |
| hh | 12小时制的小时 | 02 (2 PM) |
| mm | 分钟 | 30 |
| ss | 秒钟 | 45 |
| fff | 毫秒 | 123 |
| tt | AM/PM | PM |
| ddd | 星期缩写 | 周三/Wed |
| dddd | 星期全称 | 星期三/Wednesday |
| zzz | 时区偏移(+08:00) | +08:00 |
5️⃣ 文化相关格式化
DateTime now = DateTime.Now;
// 当前文化
string currentCultureDate = now.ToString("D", CultureInfo.CurrentCulture);
// 特定文化 (例如英文)
string usCultureDate = now.ToString("D", new CultureInfo("en-US")); // Wednesday, November 15, 2023
// 中文文化
string zhCultureDate = now.ToString("D", new CultureInfo("zh-CN")); // 2023年11月15日6️⃣ 实用扩展方法
public static class DateTimeExtensions
{
public static string ToStandardString(this DateTime dt)
{
return dt.ToString("yyyy-MM-dd HH:mm:ss");
}
public static string ToCompactString(this DateTime dt)
{
return dt.ToString("yyyyMMddHHmmss");
}
public static string ToChineseDateString(this DateTime dt)
{
return dt.ToString("yyyy年MM月dd日");
}
}
// 使用方法
DateTime now = DateTime.Now;
string standard = now.ToStandardString(); // 2023-11-15 14:30:45
string compact = now.ToCompactString(); // 20231115143045
string chinese = now.ToChineseDateString(); // 2023年11月15日7️⃣ 性能优化建议
对于高频调用的格式化操作:
- 预定义
IFormatProvider对象重复使用 - 预定义格式字符串常量
- 考虑使用
StringBuilder进行复杂格式化
// 性能优化示例
private static readonly IFormatProvider formatProvider = CultureInfo.InvariantCulture;
public static string FormatDateTimeFast(DateTime dt)
{
return dt.ToString("yyyy-MM-dd HH:mm:ss", formatProvider);
}选择哪种方式取决于具体需求:
- 简单格式化:直接使用
ToString方法 - 复杂字符串:使用字符串插值或
String.Format - 国际化应用:使用文化相关的格式化
- 需要复用代码:使用扩展方法
到此这篇关于C# 获取指定格式时间字符串的几种方法的文章就介绍到这了,更多相关C# 获取指定格式时间字符串内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
