C# 获取指定格式时间字符串的方法汇总

 更新时间:2025年11月26日 16:47:01   作者:降薪码农  
本文介绍了在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.123

2️⃣ 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:00

4️⃣ 常用格式模式说明

格式模式说明示例
yyyy四位年份2023
MM两位月份11 (November)
dd两位日期05
HH24小时制的小时14 (2 PM)
hh12小时制的小时02 (2 PM)
mm分钟30
ss秒钟45
fff毫秒123
ttAM/PMPM
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# 获取指定格式时间字符串内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用C#和Spire.PDF库实现PDF与OFD格式互转的具体教程

    使用C#和Spire.PDF库实现PDF与OFD格式互转的具体教程

    在日常文档处理工作中,经常需要在不同格式之间进行转换,PDF作为一种通用文档格式已被广泛使用,而OFD则是我国自主制定的开放版式文档标准,本文将介绍如何使用C#和Spire.PDF库实现这两种格式之间的相互转换,需要的朋友可以参考下
    2025-09-09
  • C#实现常见加密算法的示例代码

    C#实现常见加密算法的示例代码

    这篇文章主要为大家详细介绍一下C#中一些常见加密算法(Base64编码、凯撒密码、Vigenere密码、DES、AES)以及它们的实现代码,感兴趣的可以了解一下
    2022-07-07
  • ListView用法中与滚动相关的需求实现

    ListView用法中与滚动相关的需求实现

    这篇文章主要介绍了ListView用法中与滚动相关的需求实现,获取并设置ListView的滚动位置,以及获取滚动位置处的项目,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • C#中C/S端实现WebService服务

    C#中C/S端实现WebService服务

    本文主要介绍了C#中C/S端实现WebService服务,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • 在C# WinForm应用中实现多语种切换功能

    在C# WinForm应用中实现多语种切换功能

    本文将介绍如何在一个WinForm应用程序中实现多语种切换,通过一个简单的示例,你将了解到如何使用资源文件管理不同语言的文本,并通过用户界面实现语言切换,需要的朋友可以参考下
    2024-06-06
  • C#实现modbus通讯的实现示例

    C#实现modbus通讯的实现示例

    本文主要介绍了modbus通讯的串口(RTU)、网口(TCP)通讯的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-07-07
  • C#设计模式之简单工厂模式

    C#设计模式之简单工厂模式

    这篇文章介绍了C#设计模式之简单工厂模式,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • C# Web应用调试开启外部访问步骤解析

    C# Web应用调试开启外部访问步骤解析

    本文主要介绍了C# Web应用调试开启外部访问的实现过程与方法。具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • C#自定义控件添加右键菜单的方法

    C#自定义控件添加右键菜单的方法

    这篇文章主要介绍了C#自定义控件添加右键菜单的方法,本文用到control控件,专门自定义右键菜单,下面小编给大家整理下,有需要的小伙伴可以来参考下
    2015-08-08
  • C#实现FFT(递归法)的示例代码

    C#实现FFT(递归法)的示例代码

    FFT是数字信号处理中的重要算法。这篇文章将为大家详细介绍一下如何利用C#语言实现FFT(递归法),文中的示例代码讲解详细,感兴趣的可以了解一下
    2022-07-07

最新评论