我有以下代码如下。它适用于大多数情况,但今天我expiration_date
09/30/2017 00:00:00
的{{1}}小于currentDateTime
string
10/15/2016 14:34:19
的情况?我只是比较string
,我身边的错误是什么?
System.DateTime expiration_date = newVer.License.Status.Expiration_Date;
DateTime currentDateTime = DateTime.Now;
currentDateTime.ToString("MM/dd/yyyy HH:mm:ss");
int a = expiration_date.ToString("MM/dd/yyyy HH:mm:ss")
.CompareTo(currentDateTime.ToString("MM/dd/yyyy HH:mm:ss"));
//MessageBox.Show("int a is :" + a);
if (expiration_date.ToString("MM/dd/yyyy HH:mm:ss")
.CompareTo(currentDateTime.ToString("MM/dd/yyyy HH:mm:ss")) < 1)
{
crossDate = 1;
MessageBox.Show("Cross Date Alert"+ " Expiry Date Is :"+
expiration_date.ToString("MM/dd/yyyy HH:mm:ss")
+ " "+"Current Date Is :"+
currentDateTime.ToString("MM/dd/yyyy HH:mm:ss"));
}
答案 0 :(得分:12)
比较日期时间,就像比较
之类的数字一样DateTime expiration_date = newVer.License.Status.Expiration_Date;
DateTime currentDateTime = DateTime.Now;
if( expiration_date < currentDateTime)
{
// expired
}
如果您只需要日期而不是时间,请使用
DateTime expiration_date = newVer.License.Status.Expiration_Date.Date;
DateTime currentDateTime = DateTime.Now.Date;
您还可以使用两个日期的日差。
int daydiff = (int)((currentDateTime - expiration_date).TotalDays)
答案 1 :(得分:1)
比较日期示例:
DateTime d1 = DateTime.Now;
DateTime d2 = DateTime.Now.AddDays(1);
if ( d2.CompareTo(d1)>0 )
Console.WriteLine("d2>d1");
else
Console.WriteLine("d2<=d1");
答案 2 :(得分:1)
你的问题由两部分组成。可能会有更简单的事情,但是:
首先,将您的字符串转换为DateTime对象。 DateTime类有几种方法可以帮助解决这个问题。试试ParseExact。
然后,将DateTime对象转换为Unix时间戳。
现在,你有两个长整数,你可以比较,并将int比较转换为另一个DateTime,并从中获取东西。
答案 3 :(得分:1)
不要转换为字符串
DateTime expiration_date = newVer.License.Status.Expiration_Date;
if (expiration_date.CompareTo(DateTime.Now) < 1)
{
MessageBox.Show("Cross Date Alert"+ " Expiry Date Is :"+ expiration_date.ToString("MM/dd/yyyy HH:mm:ss") + " "+"Current Date Is :"+ currentDateTime.ToString("MM/dd/yyyy HH:mm:ss"));
}
答案 4 :(得分:0)
.NET为此提供了一种很棒的方法,可以使用DateTime.Compare()
方法比较两个日期时间对象。 DateTime.Compare()
方法采用2个datetime对象,并比较日期和时间或两者之一,并返回一个整数值。 DateTime.Compare()
我在这里用示例代码进行了演示:Comparing 2 DateTime objects in C#.