且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

无法隐式转换类型'System.DateTime的?“以“System.DateTime的'。显式转换存在

更新时间:2023-01-29 16:37:28

您有3种选择:



1)获取默认值

  DT =日期时间??日期时间。现在; 



它将分配 DateTime.Now (或你想要的任何其他数值)如果日期时间为空



2)检查日期时间包含值,如果没有返回空字符串

 如果(!datetime.HasValue)返回; 
DT = datetime.Value;



3)方法的变更签名

 公共字符串ConvertToPersianToShow(DateTime的日期时间)

这都是因为的DateTime?意味着它是可空的DateTime 所以它分配给的DateTime 前>你需要检查它是否包含价值,然后才分配。


I am trying to convert datetime? todatetime but I get this Error:

Error 7 Cannot implicitly convert type 'System.DateTime?' to 'System.DateTime'. An explicit conversion exists

Here is my code:

public string ConvertToPersianToShow(DateTime?  datetime)
{
  DateTime dt;
  string date;
  dt = datetime;

  string year = Convert.ToString(persian_date.GetYear(dt));
  string month = Convert.ToString(persian_date.GetMonth(dt));
        string day = Convert.ToString(persian_date.GetDayOfMonth(dt));



  if (month.Length == 1)
   {
     month = "0" + Convert.ToString(persian_date.GetMonth(dt));
   }
  if (day.Length == 1)
   {
     day = "0" + Convert.ToString(persian_date.GetDayOfMonth(dt));
   }
     //date = Convert.ToString(persian_date.GetYear(dt)) + "/" + Convert.ToString(persian_date.GetMonth(dt)) + "/" +
     //       Convert.ToString(persian_date.GetDayOfMonth(dt));
   date = year + "/" + month + "/" + day+"("+dt.Hour+":"+dt.Minute+")";
   return date;
  }

You have 3 options:

1) Get default value

dt = datetime??DateTime.Now;

it will assign DateTime.Now (or any other value which you want) if datetime is null

2) Check if datetime contains value and if not return empty string

if(!datetime.HasValue) return "";
dt = datetime.Value;

3) Change signature of method to

public string ConvertToPersianToShow(DateTime  datetime)

It's all because DateTime? means it's nullable DateTime so before assigning it to DateTime you need to check if it contains value and only then assign.