delphi 字符串转换成带秒的日期类型

delphi 字符串转换成带秒的日期类型,第1张

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中客户端如何获得服务器时钟时间等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9325949.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存