C# DateTime 日期格式化
在 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)。
DateTime.Now.ToString() | 2019-1-25 15:55:57DateTime.Now.ToString("d") | 2019-1-25DateTime.Now.ToString("g") | 2019-1-25 15:55DateTime.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 |
可使用分隔符来分隔年月日时分秒毫秒。分隔符可以是 -、/、: 等非关键字符。
DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");// 2019-01-25 18:03:57:3894DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss:ffff");// 2019/01/25 18:03:57:3894DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss:ffff dddd");// 2019/01/25 18:03:57:3894 星期五
3.3、示例图

四、参考文献
本文并非原创,也非一味照搬,修改了原文部分错误。
原文链接:博客园 - 方木一
(完)