如何在 c# 中处理日期时间的空值

本文关键字:日期 时间 空值 处理 | 更新日期: 2023-09-27 18:34:29

如何检查"开始"是空白还是空:

Employee.CurrentLongTermIncentive.StartDate

我尝试了以下方法:

Employee.CurrentLongTermIncentive.StartDate!=null // Start is empty it's falied.
Employee.CurrentLongTermIncentive.StartDate.HasValue // Start is empty it's falied.

如何检查开始日期的空值或空白值并分配给字符串值。开始日期具有日期时间格式。

如何在 c# 中处理日期时间的空值

不能将类型为 DateTime 的对象设置为 null。 这就是您的代码可能失败的原因。

您可以尝试使用 DateTime.MinValue 来标识尚未分配值的实例。

Employee.CurrentLongTermIncentive.StartDate != DateTime.MinValue;

但是,您可以使用以下声明将DateTime配置为可为空。

DateTime? mydate = null;
if (mydate == null) Console.WriteLine("Is Null");
if (mydate.HasValue) Console.WriteLine("Not Null");

注意:? - 这允许将不可为空的值分配为空。

您似乎正在使用DateTime?作为开始时间,因此请尝试以下操作

if (!Employee.CurrentLongTermIncentive.StartDate.HasValue) {
  Employee.CurrentLongTermIncentive.StartDate = (DateTime?) DateTime.Parse(myDateString);
}

其中myDateString是一个字符串,表示要分配的日期。

我想你可能想要if Employee.CurrentLongTermIncentive.StartDate != DateTime.MinValue

如果您尝试在文本框中显示它,只需执行以下操作,只需确保 Employee 和 CurrentLongTermIncentive 都不为空:

txtStartDate.Text = GetStartDate(Employee.CurrentLongTermIncentive.StartDate);
private string GetStartDate(DateTime? startDate)
{
        if (startDate != null)
        {
            return startDate.Value.ToShortDateString();
        }
        return "";
}