我一直在寻找,但没有找到解决办法。如何处理应该能够包含未初始化值(相当于null)的DateTime ?我有一个类,它可能有一个DateTime属性值设置或没有。我正在考虑将属性持有人初始化为DateTime。MinValue,然后可以很容易地检查。我想这是一个很常见的问题,你是怎么做到的?
当前回答
您可以将DateTime设置为Nullable。默认情况下DateTime不是空的。有几种方法可以使它为空。在类型DateTime后使用问号?myTime或使用泛型样式Nullable。
DateTime? nullDate = null;
or
DateTime? nullDate;
其他回答
DateTime ?MyDateTime{拿套;}
MyDateTime = (dr["f1"] == DBNull.Value) ? (DateTime?)null : ((DateTime)dr["f1"]);
可以使用可空类。
DateTime? date = new DateTime?();
问题本身给出了正确的答案。“如果datetime为空,你如何处理它?”,提问者在最后用datetime . minvalue给出答案。我的想法是提问者的方式应该是不变的。我建议使用DateTime。MaxValue比较,因为它不会发生直到12/31/9999。如果为真,则将field显示为日期以外的其他内容。下面是一个例子;
DateNotified = DBNull.Value.Equals(reader["DateNotified"])? Convert.ToDateTime(reader["DateNotified"]): DateTime.MaxValue
在前端 如果你使用的是网格,那么;
columns.Add(col => col.DateNotified).Css("text-right").Titled("Date Notified").RenderValueAs(c => c.DateNotified.ToString("MM/dd/yyyy").Equals(DateTime.MaxValue) ? "":c.DateNotified.ToString("MM/dd/yyyy"));
或者一个简单的观点
@Model.DateNotified.ToString("MM/dd/yyyy").Equals(DateTime.MaxValue) ? "":Model.DateNotified.ToString("MM/dd/yyyy")
如果你使用。net 2.0(或更高版本),你可以使用可空类型:
DateTime? dt = null;
or
Nullable<DateTime> dt = null;
之后:
dt = new DateTime();
你可以用:
if (dt.HasValue)
{
// Do something with dt.Value
}
或者你可以这样用:
DateTime dt2 = dt ?? DateTime.MinValue;
你可以在这里阅读更多: http://msdn.microsoft.com/en-us/library/b3h38hb0.aspx
下面的方法也可以
myClass.PublishDate = toPublish ? DateTime.Now : (DateTime?)null;
请注意属性PublishDate应该是DateTime?
推荐文章
- Linq-to-Entities Join vs GroupJoin
- 为什么字符串类型的默认值是null而不是空字符串?
- 在list中获取不同值的列表
- 组合框:向项目添加文本和值(无绑定源)
- 为什么在JavaScript的Date构造函数中month参数的范围从0到11 ?
- 在Windows批处理脚本中格式化日期和时间
- 如何为ASP.net/C#应用程序配置文件值中的值添加&号
- 从System.Drawing.Bitmap中加载WPF BitmapImage
- 如何找出一个文件存在于c# / .NET?
- 为什么更快地检查字典是否包含键,而不是捕捉异常,以防它不?
- [DataContract]的命名空间
- string. isnullorempty (string) vs. string. isnullowhitespace (string)
- 完全外部连接
- 如何增加日期时间一天?
- 在foreach循环中编辑字典值