我正在尝试将DateTime?转换为DateTime,但是我得到了这个错误:
错误7不能隐式转换类型'System.DateTime?‘设置为“System.DateTime”。存在显式转换
下面是我的代码:
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;
}发布于 2013-11-14 16:38:47
您有3个选项:
1)获取默认值
dt = datetime??DateTime.Now;如果datetime为空,它将分配DateTime.Now (或您想要的任何其他值
2)检查datetime是否包含值,如果不包含则返回空字符串
if(!datetime.HasValue) return "";
dt = datetime.Value;3)修改方法签名为
public string ConvertToPersianToShow(DateTime datetime)这都是因为DateTime?意味着它是可以为空的DateTime,所以在将它赋值给DateTime之前,您需要检查它是否包含值,然后再赋值。
发布于 2013-11-14 16:38:00
dt是nullable,您需要访问其Value
if (datetime.HasValue)
dt = datetime.Value;重要的是要记住,它可以是NULL。这就是为什么nullable结构具有HasValue属性来告诉您它是否是NULL。
您还可以使用null-coalescing operator ??指定缺省值
dt = datetime ?? DateTime.Now;如果左边的值为NULL,这将赋值给右边的值
发布于 2016-04-20 15:35:29
问题在于,您正在将nullable type传递给不可为空的类型。
您可以执行以下任一解决方案:
A.将dt声明为可空
DateTime? dt = dateTime;
B.使用DateTime? datetime的Value属性
DateTime dt = datetime.Value;
C.铸造它
DateTime dt = (DateTime) datetime;
https://stackoverflow.com/questions/19972965
复制相似问题