uses DateUtils;
procedure TForm1FormCreate(Sender: TObject);
var
s1,s2: string;
t1,t2: TDateTime;
b: Boolean;
begin
s1 := '2014-10-10 11:11:11';
s2 := '2014-10-10 12:12:12';
t1 := StrToDateTime(s1);
t2 := StrToDateTime(s2);
{两个时间差是否在 24 秒内}
b := WithinPastSeconds(t1, t2, 30);
// ShowMessage(BoolToStr(b, True));
end;
end
你想精确的话,可以这样做,
取系统时间,求到当前的秒数,例如是10点32分44秒
然后第一个计时器定时到15秒,到时间后就是59秒,
这时再启动第二个计时器,时间为01秒或者更小,就看你的精度要求了。
在达到0秒后,再将第一个计时器更改到59秒,
这样既可以达到你的要求,同时对系统的负担又不会太重。
如果要实时显示服务器时间,最好先同步服务器时间,然后用timer显示本地时间。
1、获取服务器时间
如果取数据服务器时间,可以用sql取,如oracle的sysdate。。。select sysdate from dual
如果取应用服务器时间,可以在服务器写个远程方法取服务器本地时间 如:now,,然后客户端调用
2、客户端同步服务器时间 uses windows;setsystemtime();
3、timer定时刷新本地时间
我有现成的代码,我以前做过的!请参考!
procedure TForm1MediaPlayer1Click(Sender: TObject; Button: TMPBtnType;
var DoDefault: Boolean);
var
Secs, Mins, MSecs, Hours, TempVal : Integer ;
begin
case Button of
btPlay :
Timer1Enabled := True ;
btPause:
Timer1Enabled := False ;
btStop:
Timer1Enabled := False ;
end;
MediaPlayer1TimeFormat := tfMilliseconds;
MSecs := MediaPlayer1Position mod 1000 ;
TempVal := MediaPlayer1Position div 1000 ;
Secs := TempVal mod 60 ;
TempVal := TempVal div 60 ;
Mins := TempVal mod 60 ;
Hours := TempVal div 60 ;
Label1Caption := IntToStr(Hours) + ':' + IntToStr(Mins) ;
Label1Caption := Label1Caption + ':' + IntToStr(Secs) + '' + IntToStr(MSecs) ;
end;
我就借花献佛吧,这是转载别人的,使用formatdatetime函数格式化日期数据
function FormatDateTime(const Format: string; DateTime: TDateTime): string;
Format参数是一个格式化字符串。DateTime是时间类型。返回值是一种格式化后的字符串,重点来看Format参数中的指令字符:
c以短时间格式显示时间,即全部是数字的表示
FormatdateTime('c',now);
输出为:2004-8-7 9:55:40
d 对应于时间中的日期,日期是一位则显示一位,两位则显示两位
FormatdateTime('d',now);
输出可能为1~31
dd 和d的意义一样,但它始终是以两位来显示的
FormatdateTime('dd',now);
输出可能为01~31
ddd 显示的是星期几
FormatdateTime('ddd',now);
输出为: 星期六
dddd 和ddd显示的是一样的。
但上面两个如果在其他国家可能不一样。
ddddd 以短时间格式显示年月日
FormatdateTime('ddddd',now);
输出为:2004-8-7
dddddd 以长时间格式显示年月日
FormatdateTime('dddddd',now);
输出为:2004年8月7日
e/ee/eee/eeee 以相应的位数显示年
FormatdateTime('ee',now);
输出为:04 (表示04年)
m/mm/mmm/mmmm 表示月
FormatdateTime('m',now);
输出为:8
FormatdateTime('mm',now);
输出为 08
FormatdateTime('mmm',now);
输出为 八月
FormatdateTime('mmmm',now);
输出为 八月
和ddd/dddd 一样,在其他国家可能不同
yy/yyyy 表示年
FormatdateTime('yy',now);
输出为 04
FormatdateTime('yyyy',now);
输出为 2004
h/hh,n/nn,s/ss,z/zzz 分别表示小时,分,秒,毫秒
t 以短时间格式显示时间
FormatdateTime('t',now);
输出为 10:17
tt 以长时间格式显示时间
FormatdateTime('tt',now);
输出为10:18:46
ampm 以长时间格式显示上午还是下午
FormatdateTime('ttampm',now);
输出为:10:22:57上午
如果要在Format中加普通的字符串,可以用双引号隔开那些特定义的字符,这样普通字符串中如果含特殊的字符就不会被显示为时间格式啦:
FormatdateTime('"today is" c',now);
输出为:today is 2004-8-7 10:26:58
时间中也可以加"-"或"\"来分开日期:
FormatdateTime('"today is" yy-mm-dd',now);
FormatdateTime('"today is" yy\mm\dd',now);
输出为: today is 04-08-07
也可以用":"来分开时间
FormatdateTime('"today is" hh:nn:ss',now);
输出为:today is 10:32:23
FormatDateTime
var
s: string;
begin
//FormatDateTime 的参数1是 String 格式指令, 参数2是 TDateTime 类型的时间
s := FormatDateTime('c', Now); {返回: 2007-12-18 23:56:05}
{指令 c 表示用短格式显示日期与时间}
s := FormatDateTime('d', Now); {返回: 19}
s := FormatDateTime('d', StrToDateTime('2008-1-1')); {返回: 1}
{d 表示日期}
s := FormatDateTime('dd', Now); {返回: 19}
s := FormatDateTime('dd', StrToDateTime('2008-1-1')); {返回: 01}
{dd 表示双位日期}
s := FormatDateTime('ddd', Now); {返回: 星期三}
s := FormatDateTime('dddd', Now); {返回: 星期三}
{ddd 与 dddd 表示星期; 可能对不同的语种会有区别}
s := FormatDateTime('ddddd', Now); {返回: 2007-12-19}
{ddddd 五个 d 表示短格式日期}
s := FormatDateTime('dddddd', Now); {返回: 2007年12月19日}
{dddddd 六个 d 表示长格式日期}
s := FormatDateTime('e', Now); {返回: 7}
{e 表示年, 1位}
s := FormatDateTime('ee', Now); {返回: 07}
{ee 表示年, 2位}
s := FormatDateTime('eee', Now); {返回: 2007}
s := FormatDateTime('eeee', Now); {返回: 2007}
{eee 与 eeee 返回4位数年}
s := FormatDateTime('m', Now); {返回: 12}
{m 表示月, 1位}
s := FormatDateTime('mm', StrToDateTime('2008-1-1')); {返回: 01}
{mm 表示月, 2位}
s := FormatDateTime('mmm', Now); {返回: 十二月}
s := FormatDateTime('mmmm', Now); {返回: 十二月}
{mmm 与 mmmm 表示长格式月}
s := FormatDateTime('y', Now); {返回: 07}
s := FormatDateTime('yy', Now); {返回: 07}
s := FormatDateTime('yyy', Now); {返回: 2007}
s := FormatDateTime('yyyy', Now); {返回: 2007}
{y yy yyy yyyy 表示年; 和 e 略有不同}
s := FormatDateTime('t', Now); {返回: 0:21}
s := FormatDateTime('tt', Now); {返回: 0:22:13}
{t tt 表示时间}
s := FormatDateTime('ampm', Now); {返回: 上午}
s := FormatDateTime('tampm', Now); {返回: 0:24 上午}
{ampm 表示上午、下午}
s := FormatDateTime('h', StrToDateTime('2007-12-30 9:58:06')); {返回: 9}
s := FormatDateTime('hh', StrToDateTime('2007-12-30 9:58:06')); {返回: 09}
{h hh 表示时}
s := FormatDateTime('n', StrToDateTime('2007-12-30 9:58:06')); {返回: 58}
s := FormatDateTime('nn', StrToDateTime('2007-12-30 9:58:06')); {返回: 58}
{n nn 表示分}
s := FormatDateTime('s', StrToDateTime('2007-12-30 9:58:06')); {返回: 6}
s := FormatDateTime('ss', StrToDateTime('2007-12-30 9:58:06')); {返回: 06}
{s ss 表示秒}
s := FormatDateTime('z', Now); {返回: 24}
s := FormatDateTime('zz', Now); {返回: 524}
s := FormatDateTime('zzz', Now); {返回: 524}
{z zz zzz 表示毫秒}
s := FormatDateTime('yy\mm\dd', Now); {返回: 07\12\19}
s := FormatDateTime('yy/mm/dd', Now); {返回: 07-12-19}
s := FormatDateTime('yy-mm-dd', Now); {返回: 07-12-19}
s := FormatDateTime('yymmdd', Now); {返回: 071219}
{使用分隔符, - 是默认的, / 是与 - 等效的, 假如我非要用 / 显示呢}
s := FormatDateTime('yy"/"mm"/"dd', Now); {返回: 07/12/19}
s := FormatDateTime('"当前时间是: "yyyy-m-d h:n:s:zz', Now);
{返回: 当前时间是: 2007-12-19 0:47:16:576}
{混入的字符串要包含在双引号中}
ShowMessage(s);
end;
先用DecodeTime(time, Hour, Min, Sec)读出两个时间的时,分,秒,
然后进行运算!(hour13600 + min160 + sec1)-(hour23600 + min260 + sec2)
就可以!
以上就是关于delphi 字符串转换成带秒的日期类型全部的内容,包括:delphi 字符串转换成带秒的日期类型、delphi编程时间一到就执行、delphi中客户端如何获得服务器时钟时间等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)