当前位置:  开发笔记 > 编程语言 > 正文

DateTime"null"值

如何解决《DateTime"null"值》经验,为你挑选了10个好方法。

我一直在搜索很多,但找不到解决方案.你如何处理应该能够包含未初始化值(相当于null)的DateTime?我有一个类可能设置了DateTime属性值.我正在考虑将属性持有者初始化为DateTime.MinValue,然后可以轻松检查.我想这是一个很常见的问题,你是怎么做到的?



1> Joel Coehoor..:

对于普通的DateTimes,如果你根本没有初始化它们,那么它们将匹配DateTime.MinValue,因为它是值类型而不是引用类型.

您还可以使用可为空的DateTime,如下所示:

DateTime? MyNullableDate;

或者更长的形式:

Nullable MyNullableDate;

最后,有一种内置的方式来引用任何类型的默认值.这将返回null引用类型,但对于我们的DateTime示例,它将返回相同的DateTime.MinValue:

default(DateTime)


如果您提供如何使用它的示例,将会有很大帮助.如何将数据库中的DateTime(可能是DBNull)分配给可为空的DateTime?
值得注意的是,当你初始化它们并使用null时,它们也被分配了`DateTime.MinValue`.
@ kirk.burleson看起来像一个单独的问题。

2> Mark Ingram..:

如果您使用的是.NET 2.0(或更高版本),则可以使用可空类型:

DateTime? dt = null;

要么

Nullable 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



3> Iman Abidi..:

约会时间?MyDateTime {获得;设置;}

MyDateTime = (dr["f1"] == DBNull.Value) ? (DateTime?)null : ((DateTime)dr["f1"]);



4> 小智..:

以下方式也适用

myClass.PublishDate = toPublish ? DateTime.Now : (DateTime?)null;

请注意,PublishDate属性应该是DateTime?



5> David Mohund..:

我考虑使用可空类型.

DateTime? myDate而不是DateTime myDate.



6> Aaron Smith..:

您可以使用可空类.

DateTime? date = new DateTime?();



7> Patrik Svens..:

您可以使用可为空的DateTime.

Nullable myDateTime;

或者像这样写的东西:

DateTime? myDateTime;



8> uncoder..:

值得指出的是,虽然DateTime变量不可能null,但仍可以在null没有编译器错误的情况下进行比较:

DateTime date;
...
if(date == null) // <-- will never be 'true'
  ...



9> Patrick Desj..:

我总是把时间安排到DateTime.MinValue.这样我就不会得到任何NullErrorException,我可以将它与我知道未设置的日期进行比较.


这意味着你无法区分"我真的需要这里的DateTime"和"它是可选的" - Nullable 是一个更好的解决方案,IMO.
我想你错过了我的答案,Spoulson写了一些东西,我正在回答.关于公众成员,它不一样,你知道.它就像String.Empty或null.你可以做到这两点,不是因为String.Empty更好,因为null是错误的.随你.
这很方便,但我将DateTime.MinValue视为一个值,而不是特殊情况.它只会导致问题.我会选择Nullable .

10> 小智..:

您可以将DateTime设置为Nullable。默认情况下,DateTime不可为空。您可以通过两种方法使它可为空。在类型DateTime之后使用问号?myTime或使用通用样式Nullable。

DateTime? nullDate = null;

要么

DateTime? nullDate;

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有