C# DateTime 格式
最后修改于 2023 年 7 月 5 日
在本文中,我们将展示如何在 C# 中格式化 DateTime 对象。
C# DateTime
DateTime 值类型表示日期和时间,值的范围从公元 (Common Era) 0001 年 1 月 1 日 00:00:00(午夜)到公元 (C.E.) 9999 年 12 月 31 日 23:59:59,采用公历。
格式化方法
要格式化 DateTime 对象,我们可以使用 DateTime.ToString、String.Format 或内插字符串语法,例如 $"{now:D}"。
C# 标准格式说明符
标准日期时间格式字符串使用单个字符格式说明符来定义 DateTime 值的文本表示形式。 例如,D 格式说明符表示长日期格式。
| 说明符 | 含义 | 示例 |
|---|---|---|
| D | 长日期 | 2022年3月26日 星期六 |
| d | 短日期 | 3/26/2022 |
| F | 完整长日期 | 2022年3月26日 星期六 下午12:59:46 |
| f | 完整短日期 | 2022年3月26日 星期六 下午12:59 |
| G | 常规长日期 | 3/26/2022 下午12:59:46 |
| g | 常规短日期 | 3/26/2022 下午12:59 |
| U | 通用完整日期 | 2022年3月26日 星期六 上午11:59:46 |
| u | 通用可排序 | 2022-03-26 12:59:46Z |
| s | 可排序 | 2022-03-26T12:59:46 |
| T | 长时间 | 下午12:59:46 |
| t | 短时间 | 下午12:59 |
| O | ISO 8601 | 2022-03-26T12:59:46.7831825+01:00 |
| R | RFC 1123 | Sat, 26 Mar 2022 12:59:46 GMT |
| M | 月份 | 3月26日 |
| Y | 年月 | 2022年3月 |
该表列出了 C# 中的标准日期时间格式说明符。
Program.cs
var now = DateTime.Now;
Console.WriteLine(now.ToString("D"));
Console.WriteLine(now.ToString("d"));
Console.WriteLine(now.ToString("F"));
Console.WriteLine(now.ToString("f"));
Console.WriteLine(now.ToString("G"));
Console.WriteLine(now.ToString("g"));
Console.WriteLine(now.ToString("U"));
Console.WriteLine(now.ToString("u"));
Console.WriteLine(now.ToString("s"));
Console.WriteLine(now.ToString("T"));
Console.WriteLine(now.ToString("t"));
Console.WriteLine(now.ToString("O"));
Console.WriteLine(now.ToString("R"));
Console.WriteLine(now.ToString("M"));
Console.WriteLine(now.ToString("Y"));
在该示例中,我们在 DateTime.ToString 方法中使用标准日期时间格式说明符来打印当前日期时间。
$ dotnet run Saturday, March 26, 2022 3/26/2022 Saturday, March 26, 2022 1:15:12 PM Saturday, March 26, 2022 1:15 PM 3/26/2022 1:15:12 PM 3/26/2022 1:15 PM Saturday, March 26, 2022 12:15:12 PM 2022-03-26 13:15:12Z 2022-03-26T13:15:12 1:15:12 PM 1:15 PM 2022-03-26T13:15:12.6729121+01:00 Sat, 26 Mar 2022 13:15:12 GMT March 26 March 2022
Program.cs
var now = DateTime.Now;
Console.WriteLine($"{now:D}");
Console.WriteLine($"{now:d}");
Console.WriteLine($"{now:F}");
Console.WriteLine($"{now:f}");
Console.WriteLine($"{now:G}");
Console.WriteLine($"{now:g}");
Console.WriteLine($"{now:U}");
Console.WriteLine($"{now:u}");
Console.WriteLine($"{now:s}");
Console.WriteLine($"{now:T}");
Console.WriteLine($"{now:t}");
Console.WriteLine($"{now:O}");
Console.WriteLine($"{now:R}");
Console.WriteLine($"{now:M}");
Console.WriteLine($"{now:Y}");
在该示例中,我们在内插字符串中使用标准日期时间格式说明符来打印当前日期时间。
C# 特定于文化的标准格式说明符
我们可以将 CultureInfo 传递给格式化方法。
Program.cs
using System.Globalization;
var now = DateTime.Now;
var ci = CultureInfo.CreateSpecificCulture("sk-SK");
CultureInfo.DefaultThreadCurrentCulture = ci;
Console.WriteLine(now.ToString("D"));
Console.WriteLine(now.ToString("d"));
Console.WriteLine(now.ToString("F"));
Console.WriteLine(now.ToString("f"));
Console.WriteLine(now.ToString("G"));
Console.WriteLine(now.ToString("g"));
Console.WriteLine(now.ToString("U"));
Console.WriteLine(now.ToString("u"));
Console.WriteLine(now.ToString("s"));
Console.WriteLine(now.ToString("T"));
Console.WriteLine(now.ToString("t"));
Console.WriteLine(now.ToString("O"));
Console.WriteLine(now.ToString("R"));
Console.WriteLine(now.ToString("M"));
Console.WriteLine(now.ToString("Y"));
在该示例中,我们使用斯洛伐克文化的标准日期时间格式说明符打印当前日期时间。
$ dotnet run sobota 26. marca 2022 26. 3. 2022 sobota 26. marca 2022 13:22:00 sobota 26. marca 2022 13:22 26. 3. 2022 13:22:00 26. 3. 2022 13:22 sobota 26. marca 2022 12:22:00 2022-03-26 13:22:00Z 2022-03-26T13:22:00 13:22:00 13:22 2022-03-26T13:22:00.4524483+01:00 Sat, 26 Mar 2022 13:22:00 GMT 26. marca marec 2022
C# 自定义日期时间格式说明符
自定义日期时间格式说明符是其他说明符,允许我们构建自己的日期时间格式。
| 说明符 | 含义 |
|---|---|
| d | 月份中的某天,从 1 到 31。 |
| dd | 月份中的某天,从 01 到 31。 |
| ddd | 星期几的缩写名称。 |
| dddd | 星期几的全名。 |
| f | 日期和时间值中的十分之一秒。 |
| ff | 日期和时间值中的百分之一秒。 |
| fff | 日期和时间值中的毫秒。 |
| ffff | 日期和时间值中的万分之一秒。 |
| fffff | 日期和时间值中的十万分之一秒。 |
| ffffff | 日期和时间值中的百分之一秒。 |
| fffffff | 日期和时间值中的百万分之一秒。 |
| ffffffff | 日期和时间值中的千万分之一秒。 |
| g/gg | 时期或时代。 |
| h | 小时,使用 12 小时制时钟,从 1 到 12。 |
| hh | 小时,使用 12 小时制时钟,从 01 到 12。 |
| H | 小时,使用 24 小时制时钟,从 0 到 23。 |
| HH | 小时,使用 24 小时制时钟,从 00 到 23。 |
| K | 时区信息。 |
| m | 分钟,从 0 到 59。 |
| mm | 分钟,从 00 到 59。 |
| M | 月份,从 1 到 12。 |
| MM | 月份,从 01 到 12。 |
| MMM | 月份的缩写名称。 |
| MMMM | 月份的全名。 |
| s | 秒,从 0 到 59。 |
| ss | 秒,从 00 到 59。 |
| t | AM/PM 指示符的第一个字符。 |
| tt | AM/PM 指示符。 |
| y | 年份,从 0 到 99。 |
| yy | 年份,从 00 到 99。 |
| yyy | 年份,最少三位数字。 |
| yyyy | 年份,以四位数数字表示。 |
| yyyyy | 年份,以五位数数字表示。 |
| z | 与 UTC 的小时偏移量,没有前导零。 |
| zz | 与 UTC 的小时偏移量,对于个位数的值,带有前导零。 |
| zzz | 与 UTC 的小时和分钟偏移量。 |
该表显示了 C# 中的自定义日期时间格式说明符。
Program.cs
var now = DateTime.Now;
Console.WriteLine(now.ToString("M/d/yy"));
Console.WriteLine(now.ToString("MM/dd/yyyy"));
Console.WriteLine(now.ToString("yy-MM-dd"));
Console.WriteLine(now.ToString("yy-MMM-dd ddd"));
Console.WriteLine(now.ToString("yyyy-M-d dddd"));
Console.WriteLine(now.ToString("yyyy MMMM dd"));
Console.WriteLine(now.ToString("h:mm:ss tt zzz"));
Console.WriteLine(now.ToString("HH:m:s tt zzz"));
Console.WriteLine(now.ToString("hh:mm:ss t z"));
Console.WriteLine(now.ToString("HH:mm:ss tt zz"));
在该示例中,我们构建了一些自定义日期时间格式。
$ dotnet run 3/26/22 03/26/2022 22-03-26 22-Mar-26 Sat 2022-3-26 Saturday 2022 March 26 1:44:03 PM +01:00 13:44:3 PM +01:00 01:44:03 P +1 13:44:03 PM +01
使用格式说明符解析日期时间字符串
在将日期时间字符串解析为 DateTime 对象时,可以使用标准和自定义 DateTime 格式说明符。
Program.cs
using System.Globalization; var ds = "Thu Nov 11, 2021"; var dt = DateTime.ParseExact(ds, "ddd MMM dd, yyyy", CultureInfo.CurrentCulture); Console.WriteLine(dt); var ds2 = "10/22/2021"; var dt2 = DateTime.ParseExact(ds2, "d", CultureInfo.CurrentCulture); Console.WriteLine(dt2);
在该示例中,我们将日期时间格式说明符传递给 DateTime.ParseExact 方法。
$ dotnet run 11/11/2021 12:00:00 AM 10/22/2021 12:00:00 AM
来源
在本文中,我们已经格式化了 C# 中的 DateTime 对象。
作者
列出所有 C# 教程。