读书人

比较时间大小解决办法

发布时间: 2012-03-02 14:40:28 作者: rapoo

比较时间大小
在界面中有2个Edit ,在里面有2个时间为字符串类型,现在我想比较这个2个时间的大小

既 如果Edit1的时间小于Edit2的时间则继续使用Edit2里的时间,否则Edit2的时间发生改变

最主要的是如何解决过零点的问题 即如 23:11和00:10 怎么比较

在线等 ,请问各位高手如何解决????

[解决办法]
转换成TDateTime,再比较
[解决办法]
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TDate d1,d2;
try
{
d1=StrToDate(Edit1-> Text.Trim());
d2=StrToDate(Edit2-> Text.Trim());
}
catch(EConvertError& e)
{
ShowMesssage( "日期无效 ");
return;
}
int k=CompareDate(d1,d2);// #include <DateUtils.hpp>
switch (k)
{
case -1: ShowMessage(Edit1-> Text+ "小 "); break;
case 0: ShowMessage( "相等 "); break;
case 1: ShowMessage(Edit1-> Text+ "大 "); break;
}
}

建议不要简单实用> <==比较
[解决办法]
没有日期的情况下00:10永远 <23:11 有什么条件吗?
你是想在什么条件下让00:10 > 23:11??
如果你让00:10 > 23:11 那10:10和23:11怎么比较?还是大于吗?

[解决办法]
真如LWLIFE(LW) 楼上所说:
加上个日期肯定就出来了,不过楼主说没有日期,不知道是什么原因,另个可以在程序启动的时候加个计数器,过1 天了加1也可以的
[解决办法]
这个比较简单,真接两个文本串比较就可以了!
23:11肯定00:10的串大
其它时间串比较也是这样,只是要求你输入串的格式相同就可以了
[解决办法]
把日期格式化后用字符串做比较
或者转化为日期格式后再比较
或者转化为代表日期的数字型后再做比较
and so on...........
[解决办法]
LZ说有并不是两个时间的比较,而是跨天比较时间的问题。所以这个问题是不能直接比较,因为只有时间显示,所以根本无法进行比较跨天的时间,只有再暗藏天的Edit,例如程序启动后“天”的值都为0,而后如果某个时间超过0点,则在相应的“天”中增加1.这样才能比较
[解决办法]
包含的数据不全,没法比较,要是带上日期,还会有31日到1日的问题,12月31日到1月1日的问题,要考虑清楚,转换成日期时间型进行比较!

读书人网 >C++ Builder

热点推荐