我有一个可以为null的Date属性BoughtDate
.我正在尝试以下方法:
if( item.BoughtDate.Value.Equals( DateTime.MaxValue) ) item.BoughtDate= null;
Run Code Online (Sandbox Code Playgroud)
还试过这个:
if( item.BoughtDate.Equals( DateTime.MaxValue) ) item.BoughtDate=null;
Run Code Online (Sandbox Code Playgroud)
调试时,我BoughtDate
和DateTime.MaxValue
似乎一模一样-但它说,这是不一样的(不设置我item.BoughtDate
为null)
为什么我的比较不起作用?
正如@PaulSuart在评论中指出的那样,问题可能是毫秒精度.DateTime.MaxValue.TimeOfDay
是{23:59:59.9999999}
,但你BoughtDate.TimeOfDay
可能是{23:59:59.9990000}
,所以他们不平等.
我要做的只是比较日期,我认为在大多数情况下这已足够:
if( item.BoughtDate.Value.Date.Equals( DateTime.MaxValue.Date) ) item.BoughtDate= null;
Run Code Online (Sandbox Code Playgroud)
编辑:正如有人指出的,它并没有回答原来的问题,只是提供了一个替代方案。
尝试使用 DateTime.Compare
https://msdn.microsoft.com/pl-pl/library/system.datetime.compare(v=vs.110).aspx
public static void Main()
{
DateTime date1 = new DateTime(2009, 8, 1, 0, 0, 0);
DateTime date2 = new DateTime(2009, 8, 1, 12, 0, 0);
int result = DateTime.Compare(date1, date2);
string relationship;
if (result < 0)
relationship = "is earlier than";
else if (result == 0)
relationship = "is the same time as";
else
relationship = "is later than";
Console.WriteLine("{0} {1} {2}", date1, relationship, date2);
}
Run Code Online (Sandbox Code Playgroud)
在你的例子中可能是这样的:
if(DateTime.Compare(item.BoughtDate.Value,DateTime.MaxValue) == 0) item.BoughtDate=null;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1375 次 |
最近记录: |