我正在尝试将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
复制相似问题