首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无法隐式转换类型“”System.DateTime?“”设置为“System.DateTime”。存在显式转换

无法隐式转换类型“”System.DateTime?“”设置为“System.DateTime”。存在显式转换
EN

Stack Overflow用户
提问于 2013-11-14 16:36:43
回答 4查看 125.1K关注 0票数 46

我正在尝试将DateTime?转换为DateTime,但是我得到了这个错误:

错误7不能隐式转换类型'System.DateTime?‘设置为“System.DateTime”。存在显式转换

下面是我的代码:

代码语言:javascript
复制
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;
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-11-14 16:38:47

您有3个选项:

1)获取默认值

代码语言:javascript
复制
dt = datetime??DateTime.Now;

如果datetime为空,它将分配DateTime.Now (或您想要的任何其他值

2)检查datetime是否包含值,如果不包含则返回空字符串

代码语言:javascript
复制
if(!datetime.HasValue) return "";
dt = datetime.Value;

3)修改方法签名为

代码语言:javascript
复制
public string ConvertToPersianToShow(DateTime  datetime)

这都是因为DateTime?意味着它是可以为空的DateTime,所以在将它赋值给DateTime之前,您需要检查它是否包含值,然后再赋值。

票数 60
EN

Stack Overflow用户

发布于 2013-11-14 16:38:00

dtnullable,您需要访问其Value

代码语言:javascript
复制
if (datetime.HasValue)
    dt = datetime.Value;

重要的是要记住,它可以是NULL。这就是为什么nullable结构具有HasValue属性来告诉您它是否是NULL

您还可以使用null-coalescing operator ??指定缺省值

代码语言:javascript
复制
dt = datetime ?? DateTime.Now;

如果左边的值为NULL,这将赋值给右边的值

票数 26
EN

Stack Overflow用户

发布于 2016-04-20 15:35:29

问题在于,您正在将nullable type传递给不可为空的类型。

您可以执行以下任一解决方案:

A.将dt声明为可空

DateTime? dt = dateTime;

B.使用DateTime? datetimeValue属性

DateTime dt = datetime.Value;

C.铸造它

DateTime dt = (DateTime) datetime;

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19972965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档