C#如何实现时间比较问题

我是C#新手,获取当前时间DataTime.Now,然后提取access数据库里面一个长日期(2009-7-234:06:58)形式的时间,用if(当前时间>=数据库里面... 我是C#新手,获取当前时间DataTime.Now ,然后提取access数据库里面一个长日期(2009-7-23 4:06:58)形式的时间,用if(当前时间>=数据库里面那个时间) 然后做我想做的事情。(就是现在时间超过或者等于过去保存的那个时间,我就可以操作其他内容了) 问题就是括号里面的两个时间比较老是出错,说是两个string类型无法比较,改了之后又有新的错误提示,到底要怎样实现两个比较?

access数据库的那个时间我是用 OleDbDataReader dr = cmd.ExecuteReader();
dr.Read();
string str1 = dr["到期时间"].ToString(); 提取出来的(前面几句我就不行了)!
当前时间是 string strNow=DateTime.Now.toString();
就是这两个时间的比较!
大侠们帮帮忙,我是菜鸟,要有详细的代码,不要简单的几句提示!谢谢啦!
展开
 我来答
韧劲9
推荐于2017-10-12 · TA获得超过9223个赞
知道小有建树答主
回答量:1638
采纳率:92%
帮助的人:339万
展开全部
C#时间比较大小方法一:时间与时间之间直接比较。
stringstrTime1=DateTime.Now.ToString(); stringstrTime2=DateTime.Now.AddDays(-1).ToString(); DateTimedt1=Convert.ToDateTime(strTime1); DateTimedt2=Convert.ToDateTime(strTime2); if(dt1>dt2) { ……其他操作 }

C#时间比较大小方法二:使用CompareTo方法,实现时间与时间之间的比较。
stringstrTime1=DateTime.Now.ToString(); stringstrTime2=DateTime.Now.AddDays(-1).ToString(); DateTimedt1=Convert.ToDateTime(strTime1); DateTimedt2=Convert.ToDateTime(strTime2); intn=dt1.CompareTo(dt2); if(n>0) { ……其他操作 }

两种C#时间比较大小的方法就介绍到这里。
【编辑推荐】
C#接口和抽象类技术特点浅析
C#继承知识详解
一个C#时间计算的实例
C#日期格式化的几种处理方法
代码详解C#比较时间的三种方法
lixinxing66
2009-07-22 · 超过24用户采纳过TA的回答
知道答主
回答量:82
采纳率:0%
帮助的人:71.6万
展开全部
我们面对的是同样的问题,同样是菜鸟,同样被日期型数据所困,不过我的问题基本解决了,方法就是不断地试验,说不上哪次就是对的。虽然说不要思路吧,但是希望下面的对你有用。
string strDate = "2008-9-11"; // 要比较的日期字符串
DateTime time1 = dateTimePicker.Value; // DateTimePicker 控件中的值,本身已经是 DateTime 型的变量了
DateTime time2 = DateTime.Parse(strDate); // 把日期字符串解析为 DateTime 型的变量
if (time1 < time2) // DateTime 型的变量是可以直接比较的
{
// dateTimePicker.Value 比 strDate 的日期早
}
else if (time1 == time2)
{
// 两个时间相同
}
else
{
// 否则,就是更迟
}

若两个都是时间格式的时候:

TimeSpan rq = (this.dateTimePicker1.Value - DateTime.Now.Date);
if (rq.TotalDays> 1)
{
MessageBox.Show("开始日期不能早于当前日期");
}
else if (rq.TotalDays<1)
{
MessageBox.Show("可用");
}

若只想取日期部分,而不取时分秒部分,那么:

将上面的改成:

第一句改成:TimeSpan rq = (this.dateTimePicker1.Value.Date - DateTime.Now.Date);//表示两个时间都只取日期部分
用rq.TotalDays跟0比较

两个都是字符串的话:

string strDate1 = "2008-9-20"; // 要比较的日期字符串1
string strDate2 = "2008-10-12"; // 要比较的日期字符串2
if (DateTime.Parse(strDate1) < DateTime.Parse(strDate2)) // DateTime 型的变量是可以直接比较大小的
{
// strDate1 比 strDate2 的日期早
}
else
{
// 否则,就是相等或更迟
}

两个都是DateTimePicker控件的话更简单:

if (dateTimePicker1.Value < dateTimePicker2.Value)
{
// dateTimePicker1 代表的日期更早
}

我做的时间比较 就是直接用字符串比较的,不是长日期而已,可以,在sql语句中比较的用to_char(RQ,'yyyy-mm-dd')和一个日期的字符串比较(当然也是yyyy-mm-dd格式的),祝你好运!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
rightmin
推荐于2017-09-20 · TA获得超过4124个赞
知道大有可为答主
回答量:2199
采纳率:0%
帮助的人:1773万
展开全部
干嘛都转成String类型呢,转成DateTime类型比较呀。
看看下面的代码,不过你的日期格式是什么样子的,只要是正确的,那么他们就是相等的。
string date1 = "2009-7-22 4:3:45";
string date2 = "2009-07-22 4:03:45";
string date3 = "2009年7月22日 4时3分45秒";
string date4 = "2009年07月22日 4时03分45秒";
DateTime d1 = Convert.ToDateTime(date1);
DateTime d2 = Convert.ToDateTime(date2);
DateTime d3 = Convert.ToDateTime(date3);
DateTime d4 = Convert.ToDateTime(date4);
Console.WriteLine(d1 == d2);
Console.WriteLine(d1 == d3);
Console.WriteLine(d1 == d4);

输出结果是3个True。

还有既然数据库里面的字段是日期格式,那么就可以直接转成DateTime类型。

DateTime date1= (DateTime)dr["到期时间"];
这样写是完全没有问题的,你还可以用Convert.ToDateTime()这个方法转。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
乁Freedom
2009-07-22 · TA获得超过2128个赞
知道小有建树答主
回答量:1580
采纳率:0%
帮助的人:1397万
展开全部
我没弄过,我说下我思路
比较的话就不能比较字符串了
从数据库里抽出来的日期是字符串,2009-7-23 4:06:58像这个,如果你只是比较到日而已 的话,可以把小时那边的字符串去掉,剩下2009-7-23,然后用这个字符串new一个DataTime出来,DataTime应该会有这个构造函数,然后再用里面的方法比较,我没试过,你自己试试
第二个方法就是比较字符串啦
把年月日的字符都分出来分别赋给int类型的变量,然后再比较
2009-7-23就以"-"符号来分割他们
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式