我一直在寻找,但没有找到解决办法。如何处理应该能够包含未初始化值(相当于null)的DateTime ?我有一个类,它可能有一个DateTime属性值设置或没有。我正在考虑将属性持有人初始化为DateTime。MinValue,然后可以很容易地检查。我想这是一个很常见的问题,你是怎么做到的?
当前回答
我有同样的问题,因为我必须给Null作为DateTime的参数,同时执行单元测试抛出ArgumentNullException。它在我的情况下工作,使用以下选项:
Assert.Throws<ArgumentNullException>(()=>sut.StartingDate = DateTime.Parse(null));
其他回答
如果你有时期望null,你可以使用这样的东西:
var orderResults = Repository.GetOrders(id, (DateTime?)model.DateFrom, (DateTime?)model.DateTo)
在存储库中使用可空datetime。
public Orders[] GetOrders(string id, DateTime? dateFrom, DateTime? dateTo){...}
如果你使用。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
只是需要注意的是,当使用Nullable对象时,它显然不再是一个“纯”datetime对象,因此你不能直接访问datetime成员。我会尽力解释的。
通过使用Nullable<>,你基本上是将DateTime包装在一个容器中(感谢泛型),它是空的-显然它的目的。这个容器有自己的属性,你可以调用它来访问前面提到的DateTime对象;在使用正确的属性后-在这种情况下是Nullable。值-然后您可以访问标准的DateTime成员,属性等。
那么,现在我想到的问题是访问DateTime对象的最佳方式。有几种方法,第一种是目前为止最好的,第二种是“伙计,为什么”。
使用Nullable。价值属性, DateTime date = myNullableObject.Value.ToUniversalTime();/ /工作 DateTime date = myNullableObject.ToUniversalTime();//不是datetime对象,失败 使用Convert.ToDateTime()将可空对象转换为datetime, DateTime date = Convert.ToDateTime(myNullableObject).ToUniversalTime();//可以,但是为什么…
虽然答案在这一点上有很好的文档,但我相信Nullable的用法可能值得发表。如果你不同意,我很抱歉。
edit:删除了第三个选项,因为它有点过于具体和大小写依赖。
我有同样的问题,因为我必须给Null作为DateTime的参数,同时执行单元测试抛出ArgumentNullException。它在我的情况下工作,使用以下选项:
Assert.Throws<ArgumentNullException>(()=>sut.StartingDate = DateTime.Parse(null));
虽然每个人都已经给出了答案,但我将提到一种容易将datetime传递到函数中的方法
[ERROR:cannot convert system.datetime?]system.datetime)
DateTime? dt = null;
DateTime dte = Convert.ToDateTime(dt);
现在你可以在函数内部传递dte了,没有任何问题。
推荐文章
- 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循环中编辑字典值