📌  相关文章
📜  c# 转换为可为空的日期时间 - C# (1)

📅  最后修改于: 2023-12-03 14:59:43.676000             🧑  作者: Mango

C# 转换为可为空的日期时间

在编写 C# 代码时,有时需要将日期字符串转换为可为空的日期时间类型(即:DateTime?)。这种情况通常是因为日期字符串可能为空,或者无法正确解析成日期时间类型。在本文中,我们将介绍如何在 C# 中执行这种类型的转换。

示例代码
string dateStr = "2022-09-20";

DateTime? date = DateTime.TryParse(dateStr, out DateTime result) ? result : (DateTime?)null;

Console.WriteLine(date.HasValue ? date.Value.ToString() : "日期格式错误");

上述代码中,我们使用 DateTime.TryParse() 方法将日期字符串转换为 DateTime 类型。如果转换成功,则将转换结果赋值给 date 变量;否则将 null 赋值给该变量。

注意,这里使用了三元运算符来判断转换结果是否为空。如果结果不为空,则使用 date.Value 取得该值,并将其转换为字符串输出;否则输出错误信息。

代码解释

首先,我们在代码中定义了一个字符串变量 dateStr,它存储了待转换的日期字符串。

接着,我们使用 DateTime.TryParse() 方法将 dateStr 中的日期字符串转换为 DateTime 类型。该方法的定义如下:

public static bool TryParse(string s, out DateTime result);

其中,s 参数表示待转换的日期字符串,result 参数表示转换后的日期时间对象。该方法返回一个布尔值,指示转换是否成功。

如果转换成功,则使用三元运算符将 result 赋值给日期时间类型变量 date;否则将 null 赋值给该变量。由于 null 不能直接赋值给非空值类型变量,所以将其强制转换为可空值类型 DateTime?

最后,我们使用 date.HasValue 方法判断 date 是否为空。如果不为空,则将转换后的日期时间对象输出;否则输出错误信息。

总结

在 C# 中,我们可以使用 DateTime.TryParse() 方法将字符串类型的日期转换为可空日期时间类型。该方法返回一个布尔值,指示转换是否成功。如果成功,则可以将转换后的日期时间对象赋值给可空日期时间类型变量;否则将其赋值为 null。在使用此种类型的变量时,需要先判断其是否为空,以防止空引用异常的发生。