时间问题 如何判断 2004-02-03 15:30:00 是否在 2003-02-02 14:20:00 2003-03-03 22:22:00 之间???急

  • 主题发起人 主题发起人 张辉明
  • 开始时间 开始时间

张辉明

Unregistered / Unconfirmed
GUEST, unregistred user!
时间问题 如何判断 2004-02-03 15:30:00 是否在 2003-02-02 14:20:00 2003-03-03 22:22:00 之间???急!! ( 积分: 200 )<br />注意我只要比较时间,不考虑日期。
如:
2004-02-03 15:30:00 是在 2003-02-02 14:20:00 2003-03-03 22:22:00之间的。
大家帮我看看下面的程序:
function bet(ctime, begtime, endtime: Ttime): boolean;
begin
if (ctime&gt;begtime) and (ctime&lt;endtime) then
Result:=true
else
Result:=false;
end;


if bet(timeof(now),timeof(t1),timeof(t2) then
begin
showmessage('在');
end
else
showmessage('不在');

上面程序有问题吗?好像不对呀??
 
注意我只要比较时间,不考虑日期。
如:
2004-02-03 15:30:00 是在 2003-02-02 14:20:00 2003-03-03 22:22:00之间的。
大家帮我看看下面的程序:
function bet(ctime, begtime, endtime: Ttime): boolean;
begin
if (ctime&gt;begtime) and (ctime&lt;endtime) then
Result:=true
else
Result:=false;
end;


if bet(timeof(now),timeof(t1),timeof(t2) then
begin
showmessage('在');
end
else
showmessage('不在');

上面程序有问题吗?好像不对呀??
 
delphi中的定义
TDate = type TDateTime;

TTime = type TDateTime;
这样直接比较肯定不行,
用DecodeTime(Time: TDateTime; var Hour, Min, Sec, MSec: Word)转换成时,分,秒,..之后再比较
 
sql:SUBSTRING(CAST(max(t1.IOTime) as varchar),12,8) as outtime
---------------------------------------------------------------
标题?: 日期时间转换
关键字: 日期时间
分类?: 个人专区
密级?: 公开
(评分: , 回复: 0, 阅读: 34) ??
var Year,Month,Day,Hour,Minute,Second,MilliSecond:Word;
MyDate,MyTime,MyDateTime:TDateTime;

数字转日期 MyDate:=EncodeDate(Year,Month,Day);
数字转时间 MyTime:=EncodeTime(Hour,Min,0,0);
MyDateTime:=EncodeDateTime(Year,Month,Day,Hour,Minute,Second,MilliSecond);
分离时分秒 DecodeTime(Time,Hour,Minute,Second,MilliSecond);
分离年月日 DecodeDate(Date,Year,Month,Day);

字符转日期时间 StrToDateTime('2002-12-30 10:30:00 am')
日期转字符 DateToStr(Date)

求两时间的天数、小时、分
天=Trunc(DateTime2-DateTime1);
时=HourOf(DateTime2-DateTime1);
分=MinuteOf(DateTime2-DateTime1);
两时间的小时:HoursBetween(Now, Old_DateTime);
两时间的分钟:MinutesBetween(Now, Old_DateTime);
两时间的毫秒: var OldTime:DWORD;
OldTime:=GetTickCount;
GetTickCount-OldTime;

时间加减
减少分钟 MyTime:=IncMinute(MyTime,-5);
增加天数 MyDate:=IncDay(MyDate,1);
增加月份 MyDate:=IncMonth(MyDate,1);

设置日期显示格式
DateSeparator:='-';
ShortDateFormat:='yyyy-mm-dd';
LongDateFormat:='yyyy-mm-dd';

设置系统时间
Var
MyTime:TSystemTime;
Begin
With MyTime do
Begin
Wyear:=2002;
Wmonth:=2;
Wday:=28;
Whour:=12;
Wminute:=30;
Wsecond:=10;
end;
SetLocalTime(MyTime);
end;

获取星期几
case DayOfWeek(Date) of
1:Week:=' 星期日';
2:Week:=' 星期一';
3:Week:=' 星期二';
4:Week:=' 星期三';
5:Week:=' 星期四';
6:Week:=' 星期五';
7:Week:=' 星期六';
end;
 
对的,没问题
timeof返回的年月日为 1899-12-30
 
用时间比大小
 
最简单的办法,DateTimeToFileDate
转换成DOS时间
 
delphi的时间实际上就是double,整数部分表示日期,小数部分表示时间.
所以,你的问题很简单了.
if (frac(t)&gt;frac(t1)) and (frac(t)&lt;Frac(t2)) then xxxx

就表示t的时间在t1 和t2 之间.
 
function bet(ctime, begtime, endtime: Ttime): boolean;
begin
result:= frac(ctime)&gt;frac(begtime)) and (frac(ctime)&lt;Frac(endtime))
end;
 
好详细了。学习中。。。。。。。
 
用SecondsBetween函数比较两个时间的时间差即可
在D6以上版本中的DateUtils单元中有该函数定义
 
如果你的begtime到endtime之间不超过24小时的话可以写成 ctime, begtime, endtime
if begtime&gt;endtime then
begin
if (ctime&lt;begtime) and (ctime&gt;endti me) then
Result:=true
else
Result:=false
else
if (ctime&gt;begtime) and (ctime&lt;endti me) then
Result:=true
else
Result:=false;
 
第一行最后三个字母是不用的
 
如果超过24小时的话就必须加日期了否则得到的时间Time是Delphi默认日期+Time,即日期都是一样的
 
笨点的办法用decodetime decodedata 分割时间和日期
 
Unit DateUtils
function TimeOf(const AValue: TDateTime): TDateTime;
Description
Call TimeOf to convert a TDateTime value to a TDateTime value that includes only the time information (sets the date portion to 0, which means 12/30/1899).
-----------
讲个笨方法:
ctime := StrToDatetime(formatdatetime('hhmmss', ctime))
begtime := StrToDatetime(formatdatetime('hhmmss', begtime))
endtime := StrToDatetime(formatdatetime('hhmmss', endtime))
这样,他们的年份都是一样的了1899-12-30
 
CompareDateTime(const A, B: TDateTime): TValueRelationship
 
DateTimeToFileDate
 
DateTimeToFileDate
只能精确到2秒
 
function DateToInt(const dt:TDateTime):Integer;
var
tt : TTimeStamp;
begin
tt := DatetimeToTimeStamp(dt);
result := tt.Date;
end;

function IntToDate(const int:Integer):TDatetime;
var
tt : TTimeStamp;
begin
tt.Date := int;
tt.Time := 0;
result := TimeStampToDatetime(tt);
end;
给你两个函数,我想对你应该有点用处.
 

Similar threads

I
回复
0
查看
851
import
I
I
回复
0
查看
1K
import
I
I
回复
0
查看
693
import
I
I
回复
0
查看
788
import
I
后退
顶部