本 C# 部分涵盖了 C# 编程语言中可用的日期和时间格式化选项列表以及一个实际示例。
使用 C# DateTime 格式化日期和时间
C# DateTime 是 .NET 框架中 System 命名空间下的一个结构体,用于格式化日期和时间。由于 DateTime 是一个结构体(struct)而不是类(class),我们知道结构体是值类型,即 DateTime 可以作为对象创建,但不是引用。因为它是一个值类型,所以 DateTime 的变量或字段不能持有 null 值。
要存储 null 值,它们应使用问号 (?) 转换为可空类型。
示例:DateTime? dt = null
DateTime 表示的日期和时间范围从公元 0001 年 1 月 1 日 00:00:00 到公元 9999 年 12 月 31 日下午 11:59:59。
初始化 C# DateTime 对象
我们可以通过以下方式初始化 C# DateTime 对象来格式化日期和时间。
调用构造函数,可以是默认构造函数,也可以是带参数的构造函数。
例如,DateTime 的默认构造函数如下所示:
DateTime dt = new DateTime();
输出 1/1/0001 12:00:00 AM
一个带有年、月、日、小时、分钟和秒参数的 DateTime 重载构造函数如下所示:
DateTime dt = new DateTime(2018, 6, 12, 8, 20, 58);
通过赋值
将属性或方法返回的日期和时间值赋给 DateTime 对象,如下所示:
DateTime dt = DateTime.Now;
DateTime dt = DateTime.AddDays(20);
将字符串解析为 C# DateTime 值
Parse 和 TryParse 通常用于将字符串解析为其等效的日期和时间值。
DateTime dt = DateTime.Parse(“1985, 01, 14”);
在 C# 中格式化日期和时间
通常,日期和时间格式字符串使用格式说明符来定义其值的文本表示形式。
要定义日期和时间值的文本表示,如果使用单个格式说明符,则称之为“标准日期和时间格式字符串”。
如果日期和时间格式字符串包含多个字符(包括空格),则称之为“自定义格式字符串”。
下表显示了不同的 C# 日期和时间格式说明符及其结果。
| 格式说明符 | 结果 |
|---|---|
| D | 2018年7月30日 |
| D | 30-07-2018 |
| F | 2018年7月30日 23:38:50 |
| F | 2018年7月30日 下午11:38 |
| G | 30-07-2018 23:38:50 |
| G | 30-07-2018 下午11:38 |
| M | 7月30日 |
| r | Mon, 30 July 2018 23:38:50 GMT |
| s | 2018-07-30T23:38:50 |
| T | 23:38:50 |
| t | 下午11:38 |
| u | 2018-07-30 23:38:50Z |
| y | 2018年7月 |
| dd | 30 |
| ddd | 星期一 |
| dddd | 星期一 |
| hh | 11 |
| HH | 11 |
| mm | 38 |
| MM | 07 |
| MMM | 7月 |
| MMMM | 七月 |
| ss | 50 |
| fff | 166 |
| FFF | 469 |
| tt | PM |
| yy | 18 |
| yyy | 018 |
| yyyy | 2018 |
下表显示了不同的自定义 C# 日期和时间格式字符串及其结果。
| C# 日期和时间格式 | 结果 |
|---|---|
| DateTime.Now.ToString(“MM/dd/yyyy”) | 07/31/2018 |
| DateTime.Now.ToString(“dddd, dd MMMM yyyy”) | 2018年7月31日,星期二 |
| DateTime.Now.ToString(“dddd, dd MMMM yyyy hh:mm”) | 2018年7月31日,星期二 08:15 |
| DateTime.Now.ToString(“dddd, dd MMMM yyyy hh:mm tt”) | 2018年7月31日,星期二 08:15 PM |
| DateTime.Now.ToString(“dddd, dd MMMM yyyy h:mm”) | 2018年7月31日,星期二 8:15 |
| DateTime.Now.ToString(“dddd, dd MMMM yyyy h:mm tt”) | 2018年7月31日,星期二 8:15 PM |
| DateTime.Now.ToString(“dddd, dd MMMM yyyy HH:mm:ss”) | 2018年7月31日,星期二 20:15:06 |
| DateTime.Now.ToString(“MM/dd/yyyy HH:mm”) | 07-31-2018 20:15 |
| DateTime.Now.ToString(“MM/dd/yyyy hh:mm tt”) | 07-31-2018 08:15 PM |
| DateTime.Now.ToString(“MM/dd/yyyy H:mm”) | 07-31-2018 20:15 |
| DateTime.Now.ToString(“MM/dd/yyyy h:mm tt”) | 07-31-2018 8:15 PM |
| DateTime.Now.ToString(“MM/dd/yyyy HH:mm:ss”) | 07-31-2018 20:15:30 PM |
| DateTime.Now.ToString(“MMMM dd”) | 7月31日 |
| DateTime.Now.ToString(“yyyy-MM-dd T HH:mm:ss.fffffffK”) | 2018-07-31 T 00:34:54.0306280+05:30 |
| DateTime.Now.ToString(“ddd, dd MMM yyy HH: mm: ss GMT”) | Tue, 31 Jul 2018 34:54:03 GMT |
| DateTime.Now.ToString(“yyyy-MM-dd T HH:mm:ss”) | 2018-07-31 T 20:15:30 |
| DateTime.Now.ToString(“HH:mm”) | 20:15 |
| DateTime.Now.ToString(“hh:mm tt”) | 08:15 PM |
| DateTime.Now.ToString(“H:mm”) | 20:15 |
| DateTime.Now.ToString(“h:mm tt”) | 8:15 PM |
| DateTime.Now.ToString(“HH:mm:ss”) | 20:15:06 |
| DateTime.Now.ToString(“yyyy MMMM”) | 2018年七月 |
C# 日期和时间格式化示例
让我们看一个格式化日期和时间的代码,并通过 DateTime 结构体的对象来演示其不同的属性和方法。
只需创建一个 Windows 窗体,在上面添加一个按钮,并在其按钮点击事件中编写以下代码。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApp2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
DateTime current_date1;
DateTime current_date2;
DateTime current_date3;
current_date1 = DateTime.Now;
MessageBox.Show(current_date1.ToString());
int day = current_date1.Day;
MessageBox.Show(day.ToString());
current_date2 = DateTime.Today;
MessageBox.Show(current_date2.ToString());
current_date3 = DateTime.Now.AddDays(30);
MessageBox.Show(current_date3.ToString());
string custom = current_date1.ToString("dddd, dd MMMM yyyy HH:mm:ss");
MessageBox.Show(custom.ToString());
}
}
}
输出

运行此日期和时间格式项目后,将打开以下窗口

当您单击该 button1 时,将显示带有日期的消息框。

current_date1、current_date2 和 current_date3 是为 DateTime 创建的不同对象。
对象 current_date1 用于通过 DateTime 属性显示当前系统日期。
DateTime.Now;
当前系统日期显示在消息框中。
同样,DateTime.AddDays(30) 将通过在当前日期上增加30天来显示日期和时间。
最后,我们尝试显示自定义格式字符串 ddd, dd MMMM yyyy HH:mm:ss 的结果。