C# DateTime 日期格式化

[TOCM]

在 C# 中 DateTime 是一个包含日期、时间的类型,此类型通过ToString()转换为字符串时,可根据传入给Tostring()的参数转换为多种字符串格式。

一、分类


DateTime 调用ToString()传入的参数可分为制式和自定义两种:

  • 制式类型:系统自带的,传入特定的单个字符,就可转换为系统已设定好的格式。
  • 自定义类型:自由组合日期代码(y、M、d、h、m、s、f)来展示丰富的日期格式。

二、制式类型


说明:传入特定的单个字符,就可转换为系统已设定好的格式。

1、格式来源

在 Windows 系统中的区域和语言(位置:控制面板 > 区域和语言)选项中可设置日期和时间的格式。

可设置的分类有:短日期、长日期、短时间、长时间等。

调用ToString()进行转换时,许多转换方式都是通过上面的 4 个分类进行组合。

2、符号对照表

2.1、配置环境

  • .NETFramework 版本:4.0
  • 操作系统:Windows 10
  • 格式信息:
    格式

2.2、符号对照表

符号 语法 示例 说明
DateTime.Now.ToString() 2019/1/25 15:55:57 短日期 + 长时间
d DateTime.Now.ToString("d") 2019/1/25 短日期
D DateTime.Now.ToString("D") 2019年1月25日 长日期
f DateTime.Now.ToString("f") 2019年1月25日 15:55 长日期 + 短时间
F DateTime.Now.ToString("F") 2019年1月25日 15:55:57 长日期 + 长时间
g DateTime.Now.ToString("g") 2019/1/25 15:55 短日期 + 短时间
G DateTime.Now.ToString("G") 2019/1/25 15:55:57 短日期 + 长时间
t DateTime.Now.ToString("t") 15:55 短时间
T DateTime.Now.ToString("T") 15:55:57 长时间
u DateTime.Now.ToString("u") 2019-01-25 15:55:57Z
U DateTime.Now.ToString("U") 2019年1月25日 7: 55:57 本初子午线的长日期和长时间
m DateTime.Now.ToString("m") 1月25日
M DateTime.Now.ToString("M") 1月25日
r DateTime.Now.ToString("r") Fri, 25 Jan 2019 15:55:57 GMT
R DateTime.Now.ToString("R") Fri, 25 Jan 2019 15:55:57 GMT
y DateTime.Now.ToString("y") 2019年1月
Y DateTime.Now.ToString("Y") 2019年1月
o DateTime.Now.ToString("o") 2019-01-25T15:55:57.3290052+08:00
O DateTime.Now.ToString("O") 2019-01-25T15:55:57.3290052+08:00
s DateTime.Now.ToString("s") 2019-01-25T15:55:57

2.3、示例图

示例图

Windows 2003 系统中的 无字符、d、g、G 格式中会用“-”符号替代“/”符号(短日期格式为:yyyy-m-d)。

  1. DateTime.Now.ToString() | 2019-1-25 15:55:57
  2. DateTime.Now.ToString("d") | 2019-1-25
  3. DateTime.Now.ToString("g") | 2019-1-25 15:55
  4. DateTime.Now.ToString("G") | 2019-1-25 15:55:57

三、自定义类型


开发人员可通过英文字符(y、M、d、h、m、s、f)分别代替(年、月、日、时、分、秒、毫秒)来自由组合日期时间格式。

3.1、配置环境

  • .NETFramework 版本:4.0
  • 操作系统:Windows 10

3.2、符号对照表

符号 说明 语法 示例
yy 年份后两位 DateTime.Now.ToString("yy") 19
yyyy 4 位年份 DateTime.Now.ToString("yyyy") 2019
MM 两位月份;单数月份前面用 0 填充 DateTime.Now.ToString("MM") 01
dd 日数 DateTime.Now.ToString("dd") 25
ddd 周几 DateTime.Now.ToString("ddd") 周五
dddd 星期几 DateTime.Now.ToString("dddd") 星期五
hh 12 小时制的小时数 DateTime.Now.ToString("hh") 05
HH 24 小时制的小时数 DateTime.Now.ToString("HH") 17
mm 分钟数 DateTime.Now.ToString("mm") 04
ss 秒数 DateTime.Now.ToString("ss") 07
ff 毫秒数前 2 位 DateTime.Now.ToString("ff") 67
fff 毫秒数前 3 位 DateTime.Now.ToString("fff") 678
ffff 毫秒数前 4 位 DateTime.Now.ToString("ffff") 6789

可使用分隔符来分隔年月日时分秒毫秒。分隔符可以是 -、/、: 等非关键字符。

  1. DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
  2. // 2019-01-25 18:03:57:3894
  3. DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss:ffff");
  4. // 2019/01/25 18:03:57:3894
  5. DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss:ffff dddd");
  6. // 2019/01/25 18:03:57:3894 星期五

3.3、示例图

示例图

四、参考文献


本文并非原创,也非一味照搬,修改了原文部分错误。

原文链接:博客园 - 方木一

(完)