C#可空日期时间格式错误-无法隐式转换类型';字符串';至';System.DateTime?&x27;
我的数据库中有一个可为空的datetime列 在我的viewmodel中,此属性定义如下:C#可空日期时间格式错误-无法隐式转换类型';字符串';至';System.DateTime?&x27;,c#,datetime,formatting,datetime-format,C#,Datetime,Formatting,Datetime Format,我的数据库中有一个可为空的datetime列 在我的viewmodel中,此属性定义如下: public DateTime? ExpiryDate { get; set; } 在我的控制器编辑方法中,我尝试按如下方式设置此属性的值: viewModel.ExpiryDate = topic.ExpiryDate.HasValue ? topic.ExpiryDate.Value.ToString("DD MMM YYYY") : null; 但我得到了一个错误: Ca
public DateTime? ExpiryDate { get; set; }
在我的控制器编辑方法中,我尝试按如下方式设置此属性的值:
viewModel.ExpiryDate = topic.ExpiryDate.HasValue ?
topic.ExpiryDate.Value.ToString("DD MMM YYYY") : null;
但我得到了一个错误:
Cannot implicitly convert type 'string' to 'System.DateTime?'
如果我有以下项,即不可为空,则它工作正常,没有任何错误:
public DateTime ExpiryDate { get; set; }
viewModel.ExpiryDate = topic.ExpiryDate.ToString("DD MMM YYYY")
这样做:
viewModel.ExpiryDate = topic.ExpiryDate.HasValue ?
topic.ExpiryDate.Value : null;
使用此代码
.ToString(“DD-MMM-YYYY”)
,您将向DateTime类型属性传递一个字符串。请确保viewModel.ExpiryDate
也是一个可为空的日期时间类型,因为您正在尝试分配空值。viewModel.ExpiryDate
是一个日期时间?
但您正在尝试分配字符串。不清楚吗?DateTime
没有格式,您想用ToString(“DD-MMM-YYYY”)
在这里实现什么?显然,ExpiryDate应该指定为Convert.ToDateTime(字符串格式)或DateTime.ParseExact(字符串格式)。ExpiryDate是我的数据库表中可为空的日期时间值。在我看来,我想在文本框字段中格式化它的显示。这就是为什么我在将其分配给viewmodel时尝试对其进行格式化。为什么不直接viewmodel.ExpiryDate=topic.ExpiryDate
?不确定两者的类型,但您是正确的fubo.)Convert.ToDateTime(String.Format(“{0:dd-MMM-yyyy}”,topic.expireydate.Value)
或DateTime.ParseExact(topic.expireydate.Value,“dd-MMM-yyyy”,CultureInfo.InvariantCulture)
如果OP需要特定的日期格式,即topic.ExpiryDate是字符串而不是DateTime,则可以使用该选项。@Tetsuya topic.ExpiryDate是一个可以为空的DateTime值。