DELPHI获得系统当前时间日期和格式化时间
Delphi格式化日期浮动值FormatDateTime和FormatFloat用法
Delphi 格式化日期浮动值FormatDateTime 和FormatFloat 用法Delphi 格式化日期/浮动值 FormatDateTime 和 FormatFloat 用法1、FormatDateTime 格式化日期1.1 原型:1 2 3 4 5 6 7 8 9 10 function FormatDateTime(const Format: string; DateTime: TDateTime): string;beginDateTimeToString(Result, Format, DateTime);end;function FormatDateTime(const Format: string; DateTime: TDateTime; const FormatSettings: TFormatSettings): string;beginDateTimeToString(Result, Format, DateTime, FormatSettings); end;1.2 Format 参数介绍:• c 以短时间格式显示时间,即全部是数字的表示1 F ormatdateTime('c',now); //2020-11-6 9:55:40• d 对应于时间中的日期,日期是一位则显示一位,两位则显示两位1 F ormatdateTime('d',now); //1~31• dd 和d 的意义一样,但它始终是以两位来显示的1 F ormatdateTime('dd',now); //01~31• ddd 显示的是星期几1 F ormatdateTime('ddd',now); //星期一•o dddd 和ddd 显示的是一样的。
但上面两个如果在其他国家可能不一样。
• ddddd (5个d ) 以短时间格式显示年月日1 F ormatdateTime('ddddd',now); //2020-11-06• dddddd (6个d ) 以长时间格式显示年月日1 F ormatdateTime('dddddd',now); //2020年11月6日• e/ee/eee/eeee 以相应的位数显示年1 F ormatdateTime('ee',now); //04 (表示04年)• m/mm/mmm/mmmm 表示月1 2 3 4 FormatdateTime('m',now); //9FormatdateTime('mm',now); //09FormatdateTime('mmm',now); //9月FormatdateTime('mmmm',now); //9月• yy/yyyy 表示年1 2 FormatdateTime('yy',now); //20FormatdateTime('yyyy',now); //2020• h/hh, n/nn, s/ss ,z/zzz 分别表示小时、分、秒、毫秒 • t 以短时间格式显示时间1 F ormatdateTime('t',now); //10:17• tt 以长时间格式显示时间1 F ormatdateTime('tt',now); //10:18:46• ampm 以长时间格式显示上午还是下午1 F ormatdateTime('ttampm',now); //10:22:57上午1.3 加普通的字符串可以用双引号隔开那些特定义的字符,这样普通字符串中如果含特殊的字符就不会被显示为时间格式:1 F ormatdateTime('"today is" c',now); //today is 2020-11-6 10:26:581.4 加"-"或"\"来分开日期:1 2 FormatdateTime('"today is" yy-mm-dd',now); //today is 20-11-06 FormatdateTime('"today is" yy\mm\dd',now); //today is 20\11\061.5 用":"来分开时间1 F ormatdateTime('"today is" hh:nn:ss',now); //today is 10:32:231.6 Delphi 示例:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 procedure FormatDateTimes;vars: 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 表32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 示长格式月}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('yy*mm*dd', Now); {返回: 07*12*19}{使用分隔符, - 是默认的, / 是与 - 等效的, 假如我非要用 / 显示呢?}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;2、FormatFloat 格式化浮动值2.1 原型:1 2 3 function FormatFloat(const Format: string; Value: Extended): string; varBuffer: array[0..255] of Char;4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 beginif Length(Format) > SizeOf(Buffer) - 32 then ConvertError(@SFormatTooLong);SetString(Result, Buffer, FloatToTextFmt(Buffer, Value, fvExtended,PChar(Format)));end;function FormatFloat(const Format: string; Value: Extended; const FormatSettings: TFormatSettings): string;varBuffer: array[0..255] of Char;beginif Length(Format) > SizeOf(Buffer) - 32 then ConvertError(@SFormatTooLong);SetString(Result, Buffer, FloatToTextFmt(Buffer, Value, fvExtended,PChar(Format), FormatSettings));end;Extended 类型是所有浮点值中表示范围最大的,如果传入该方法的参数比如Double 或者其他,则可以保存不会超出范围。
Delphi 常用日期与时间函数
Delphi 常用日期与时间函数1 获取特定的日期与时间本小节将为您介绍Delphi 所提供的获取特定日期与时间的函数.这些函数稍后将有详细的范例说明.笔者这里将以列表的方式先说明每一个函数所代表的意义,如图示:函数名称单元文件所代表的意义NowSysUtils此函数可返回现在的日期与时间,其返回值为TDateTime类型DateSysUtils此函数可返回现在的日期,其返回值为TDateTime类型TimeSysUtils此函数可返回现在的时间,其返回值为TDateTime类型TodayDateUtils此函数可返回今天的日期,其返回值为TDateTime类型,此函数的结果与Date函数相同. TomorrowDateUtils此函数可返回昨天的日期,其返回值为TDateTime类型YesterdayDateUtils此函数可返回明天的日期,其返回值为TDateTime类型CurrentyearSysUtils此函数可返回现在所属的年度,其返回值为4的整数.例如:2001HoursperdaySysUtils此常数定义每天的小时数.HoursPerDay =24;MinsperdaySysUtils此常数定义每天的分钟数.MinsPerDay = MinsPerDay*60SecsperdaySysUtils此常数定义每天的秒数.SecPerDay = MinsPerDay *60msecsperdaySysUtils此常数定义每天的毫秒数.MSecsPerDay =SecsperDay*1000Now (返回当前的日期时间)引用单元:SysUtils函数声明:Function Now : TDateTime;范例D-1Procedure TForm1.Button1Click(Sender: TObject); VarMyDateTime : TDateTime;beginMyDateTime :=Now;Showmessage(DateTimeToStr(MyDateTime)); end;Date(返回当前的日期)引用单元:SysUtils函数声明:Function Day :TDateTime;范例D-2Procedure TForm1.Button1Click(Sender: TObject); VarMyDateTime : TDateTime;beginMyDateTime :=Date;Showmessage(DateTimeToStr(MyDateTime)); end;Time(返回当前的时间)引用单元:SysUtils函数声明:Function Time:TDateTime;范例D-3Procedure TForm1.Button1Click(Sender: TObject); VarMyDateTime : TDateTime;beginMyDateTime :=Time;Showmessage(DateTimeToStr(MyDateTime)); end;Today(返回今天的日期)引用单元:DateUtils函数声明:Function Today :TDateTime;范例D-4Procedure TForm1.Button1Click(Sender: TObject); VarMyDateTime : TDateTime;Begin//uses DateUtilsMyDateTime :=Today;Showmessage(DateTimeToStr(MyDateTime)); end;Tomorrow(返回明天的日期)引用单元:DateUtils函数声明:Function Tomorrow:TDateTime;范例D-5Procedure TForm1.Button1Click(Sender: TObject);VarMyDateTime : TDateTime;Begin//uses DateUtilsMyDateTime :=Tomorrow;//MyDateTime : Now +1; //两者相同Showmessage(DateTimeToStr(MyDateTime)); //不包含时间部分end;Yesterday(返回昨天的日期)引用单元:DateUtils函数声明:Function Yesterday :TDateTime;范例D-6Procedure TForm1.Button1Click(Sender: TObject);VarMyDateTime : TDateTime;Begin//uses DateUtilsMyDateTime :=Yesterday;//MyDateTime : Now -1; //两者相同Showmessage(DateTimeToStr(MyDateTime)); //不包含时间部分end;CurrentYear(返回现在所属的年度)引用单元:SysUtils函数声明:Function CurrentYear :Word;范例D-7Procedure TForm1.Button1Click(Sender: TObject);VarThisYear: Word;Beginthis year := CurrentYear;Showmessage(IntToStr(ThisYear)); // 4位整数end;HoursPerDay,MinsPerDay,SecsPerDay及MsecsPerDay等日期与时间常数. 引用单元:SysUtils函数声明:Function CurrentYear:Word;范例D-8Procedure TForm1.Button1Click(Sender: TObject);BeginShowmessage('每天的小时数=' + IntToStr(HoursperDay)); //24 Showmessage('每天的分钟数=' + IntToStr(MinsperDay)); // 1440Showmessage('每天的秒数=' + IntToStr(SecsperDay)); //24Showmessage('每天的毫秒数=' + IntToStr(MSecsperDay)); //24end;D.2 日期处理函数:函数名称单元文件所代表的意义YearOfDateUtils此函数可获取TDateTime格式中的年度,其返回值为Word类型.YearsBeTweenDateUtils此函数可返回两个指定日期间的年份,一年以365.25天为计算单位.其返回值不包含小数部分YearSpanDateUtils此函数可返回两个指定日期间的年份,一年以365.25天为计算单位.其返回值包含小数部分StartOfAYearDateUtils此函数可返回特定年份的第一天EndOfAYearDateUtils此函数可返回特定年份的最后一天StrtOfTheYearDateUtils此函数可返回特定日期的该年第一天EndOfTheYearDateUtils此函数可返回特定日期的该年最后一天IncYearDateUtils此函数可将指定的TDateTime变量加上指定的年度,其默认值为1年MonthOfDateUtils此函数可获取TDateTime格式中的月份,其返回值为Word类型MonthOfTheYearDateUtils此函数可获取TDateTime格式中的月份,其返回值为Word类型MonthBetweenDateUtils次函数可返回两个指定日期间的月份数,一个月以30.4375天为计算单位.其返回值不包含小数部分MonthSpanDateUtils次函数可返回两个指定日期间的月份数,一个月以30.4375天为计算单位.其返回值包含小数部分StartOfAMonthDateUtils此函数可返回特定年月的第一天EndOfAMonthDateUtils此函数可返回特定年月的最后一天StartOfTheMonthDateUtils此函数可返回指定日期的该年的第一天EndOfTheMonthDateUtils此函数可返回指定日期的该年的最后一天IncMonthDateUtils此函数可将指定的TDateTime变量加上指定的月份,其默认值为加上1个月IncAMonthDateUtils此函数可将指定的年月日加上指定的月份,其默认值为加上1个月DaysInAYearDateUtils此函数可返回指定年份的总天数DaysInYearDateUtils此函数可返回指定TDateTime变量中该年分的总天数DaysInAMonthDateUtils此函数可返回指定月份的总天数DaysInMonthDateUtils此函数可返回指定TDateTime变量中该月份的总天数DaysOfDateUtils此函数可获取TDateTime格式中的日期,其返回值为Word类型DaysBetweenDateUtils此函数可获取格式中的日期,其返回值不包含小数部分DaySpanDateUtils此函数可返回两个指定日期间的天数,其返回值包含小数部分DayOfTheYearDateUtils此函数可返回指定TDateTime变量为该年的第几天.例如2月1日则返回32 DayOfTheMonthDateUtils此函数可返回指定TDateTime变量为该月的第几天,其返回值介于1到31 DayOfTheWeekDateUtils此函数可返回指定TDateTime变量为该周的第几天,其返回值介于1到7.星期一为第一天. DayOfWeekDateUtils此函数可返回指定TDateTime变量为该周的第几天,其返回值介于1到7.星期日为第一天. StartOfADayDateUtils此函数可返回指定日期一天的开始时间,其返回值为TDateTime类型.其时间默认为12:00:000 AMEndOfADayDateUtils此函数可返回指定日期一天的结束时间,其返回值为TDateTime类型.其时间默认为11:59:999 PMStartOfTheDayDateUtils此函数可返回指定TDateTime变量的一天开始时间,其返回值为TDateTime类型.其时间默认为:12:00:000 AMEndOfTheDayDateUtils此函数可返回指定TDateTime变量的一天结束时间,其返回值为TDateTime类型.其时间默认为11:59:999PMIncDayDateUtils此函数可为指定日期加上特定的天数,其返回值为TDateTime类型,其默认天数为1天WeeksInAYearDateUtils此函数可返回指定年度的周数,其返回值不是52就是53WeeksInYearDateUtils此函数可返回指定TDateTime变量的周数,其返回值不是52就是53WeekOfDateUtils次函数可返回指定日期为该年的第几周,其返回值为1~53WeekOfTheYearDateUtils次函数可返回指定日期为该年的第几周,其返回值为1~53WeekOfTheMonthDateUtils次函数可返回指定日期为该月的第几周,其返回值为1~6WeeksBetweenDateUtils此函数可返回两个指定日期间的周数,其返回值不包含小数部分WeekSpanDateUtils此函数可返回两个指定日期间的周数,其返回值包含小数部分StartOfAweekDateUtils此函数可返回指定日期一周的开始时间,其返回值为TDateTime类型.其时间默认为12:00:000 PMEndOfAWeekDateUtils此函数可返回指定日期一周的结束时间,其返回值为TDateTime类型.其时间默认为11:59:999 PMStartOfTheWeekDateUtils此函数可返回指定TDateTime变量的一周开始时间,其返回值为TDateTime类型.其其时间默认为12:00:000 AMEndOfTheWeekDateUtils此函数可返回指定TDateTime变量的一周结束时间,其返回值为TDateTime类型.其时间默认为11:59:999 AMIncWeekDateUtils此函数可将指定日期加上指定周数,其返回值为TDateTime类型YearOf(返回指定日期的年度)引用单元:DateUtils函数声明:Function YearOf ( const AValue : TDateTime) :Word;范例D-9Procedure TForm1.Button1Click(Sender: TObject);Begin//三者都相同Showmessage('年度=' + IntToStr(YearOf(Now)));Showmessage('年度=' + IntToStr(YearOf(Date)));Showmessage('年度=' + IntToStr(YearOf(Today)));end;YearsBetween(返回两个指定日期间的年份)引用单元:DateUtils函数声明:Function YearsBetween ( const ANow, AThen : TDateTime) :Integer;范例D-10Procedure TForm1.Button1Click(Sender: TObject);Begin//不包含小数,一年以365.25天为计算单位Showmessage('几年=' + IntToStr(YearsBetween(Now,Now+560))); //1end;YearSpan(返回两个指定日期间的年份)引用单元:DateUtils函数声明:Function YearsSpan( const ANow , AThen : TDateTime) :Double; 范例D-11Procedure TForm1.Button1Click(Sender: TObject);Begin//包含小数,一年以365.25天为计算单位Showmessage('几年=' + FloatToStr(YearSpan(Now,Now+560)));//1.53….end;StartOfAYear(返回特定年份的第一天)引用单元:DateUtils函数声明:Function StartOfAYear ( const AYear) : TDateTime;范例D-12Procedure TForm1.Button1Click(Sender: TObject);BeginShowmessage(DateTimeToStr(StartOfAYear(2001)));//2001/1/1 早上12:00:00end;EndOfAYear(返回特定年份的最后一天)引用单元:DateUtils函数声明:Function EndOfAYear ( const AYear) : TDateTime;范例D-13Procedure TForm1.Button1Click(Sender: TObject);BeginShowmessage(DateTimeToStr(EndOfAYear(2001)));//2001/12/31 下午11:59:59end;StartOfTheYear(返回指定日期的该年的第一天)引用单元:DateUtils函数声明:Function StartOfTheYear ( const AValue : TDateTime) :TDateTime; 范例D-14Procedure TForm1.Button1Click(Sender: TObject);BeginShowmessage(DateTimeToStr(StarOfTheYear(Now)));//指定的年度/1/1早上12:00:00end;EndOfTheYear(返回指定日期的该年的最后一天)引用单元:DateUtils函数声明:Function EndOfTheYear ( const AValue : TDateTime) :TDateTime; 范例D-15Procedure TForm1.Button1Click(Sender: TObject);BeginShowmessage(DateTimeToStr(StarOfTheYear(Now)));//指定年度/12/31下午11:59:59end;IncYear(将指定的TDateTime变量加上指定的年)引用单元:DateUtils函数声明:Function IncYear ( const AValue : TDateTimel; const ANumberOfYears : Integer =1) :TDateTime;范例D-16Procedure TForm1.Button1Click(Sender: TObject);varmyDateTime : TDateTime;BeginmyDateTime : = IncYear(Now,3); //往后加3年Showmessage(DateTimeToStr(myDateTime));End;MonthOf(获取TDateTime格式中的月份)引用单元:DateUtils函数声明:Function MonthOf ( const AValue : TDateTime) :Word;范例D-17Procedure TForm1.Button1Click(Sender: TObject);varmyDateTime : TDateTime;m : Integer;BeginmyDateTime : = Now;//两个函数获取相同的结果m := MonthofTheYear(myDateTime);Showmessage(IntToStr(m));end;MonthOfTheYear(获取TDateTime格式中的月份)引用单元:DateUtils函数声明:Function MonthOfTheYear ( const AValue : TDateTime) :Word;范例D-18Procedure TForm1.Button1Click(Sender: TObject);vari :Integer;f :Double;Begini := MonthsBetween(Now,Now+89);//差89天Showmessage(IntToStr(i));//2f := MonthSpan(Now,Now+89);//差89天Showmessage(FloatToStr(f));//2.924…End;MonthsBetween(返回两个指定日期间的月份数)引用单元:DateUtils函数声明:Function MonthsBetween ( const ANow, AThen : TDateTime) :Integer;MonthSpan(返回两个指定日期间的月份数)引用单元:DateUtils函数声明:Function MonthSpan ( const ANow, AThen : TDateTime) :Double;StartOfAMonth(返回特定年月的第一天)引用单元:DateUtils函数声明:Function StartOfAMonth ( const AYear, AMonth : Word) : TDateTime; EndOfAMonth(返回特定年月的最后一天)引用单元:DateUtils函数声明:Function EndOfTheMonth ( const AYear, AMonth : Word) : TDateTime; StartOfTheMonth(返回特定年月的第一天)引用单元:DateUtils函数声明:Function StartOfTheMonth ( const AValue : TDateTime) :TDateTime; EndOfTheMonth(返回特定年月的最后一天)引用单元:DateUtils函数声明:Function EndOfTheMonth ( const AValue : TDateTime) :TDateTime;范例D-19varmyDateTime :TDateTime;Year,Month :Integer;BeginYear := YearOf(Now);Month :=MonthOf(Now);//找出当前月份的第一天myDateTime := StartOfAMonth(Year,Month);Showmessage(DateTimeToStr(myDateTime));//找出当前月份的最后一天myDateTime := EndOfAMonth(Year,Month);Showmessage(DateTimeToStr(myDateTime));//找出当前月份的第一天myDateTime := StartOfTheMonth(Now);Showmessage(DateTimeToStr(myDateTime));//找出当前月份的最后一天myDateTime := EndOfTheMonth(Now);Showmessage(DateTimeToStr(myDateTime));end;IncMonth(指定的TDateTime变量加上指定的月份)引用单元:DateUtils函数声明:Function IncMonth ( const Date : TDateTime ; NumberOfMonths : Integer = 1) :TDateTime;IncAMonth(指定的年月日变量加上指定的月份)引用单元:DateUtils函数声明:Procedure IncAMonth ( Var Year, Month , Day : Word ; NumberOfMonths : Integer =1 ); 范例D-20varmyDateTime :TDateTime;Year,Month,Day :Word;Begin//加上指定的月份myDateTime := IncMonth(Now,3);//加上三个月Showmessage(DateTimeToStr(myDateTime));Year := YearOf(Now);Day := Dayof(Now);//加上指定的月份IncAMonth(Year,Month,Day,3);Showmessage('Month'+IntToStr(Month));end ;DaysInAYear(返回指定年份的总天数)引用单元:DateUtils函数声明:Function DaysInAYear ( const AYear : Word) :Word; DaysInYear(返回指定TDateTime变量中该年份的总天数)引用单元:DateUtils函数声明:Function MinuteOfTheHour ( const AValue : TDateTime) :Word; DaysInAMonth(返回指定月份的总天数)引用单元:DateUtils函数声明:Function DaysInAMonth ( const AYear , AMonth : Word) :Word; DaysInMonth(返回指定TDateTime变量中该月份的总天数)引用单元:DateUtils函数声明:Function DaysInMonth ( const AValue : TDateTime) :Word;范例D-21procedure TForm1.Button1Click(Sender : TObfect) ;varmyDateTime : TDateTime ;Year, Month : Word ;I : Integer ;BeginYear := YearOf(Now) ;//获取指定年份的总天数i := DaysInAYear(Year) ;Showmessage('DaysInAYear='+IntToStr (i)) ;i := DaysInYear(now) ;Showmessage('DaysInMonth =' + IntToStr (i)) ;//获取指定月份的总天数Month := MonthOf(Now) ;i := DaysInMonth(Now) ;Showmessage( 'DaysInMonth = '+IntToStr(i)) ;end;DaysOf(获取TDateTime格式中的日期)引用单元:DateUtils函数声明:Function DaysOf ( const AValue : TDateTime) :Word;范例D-22procedure TForm1.Button1Click(Sender : TObfect) ;varDay : Word ;begin//获取指定TDateTime的日期Day := DayOf(Now) ;Showmessage(IntToStr(Day)) ;end ;DaysBetween(返回两个指定日期间的天数)引用单元:DateUtils函数声明:Function DaysBetween( const ANow, AThen : TDateTime) :Integer; DaySpan(返回两个指定日期间的天数)引用单元:DateUtils函数声明:Function DaySpan ( const ANow , AThen : TDateTime) :Double;范例D-23vari : Integer ;f : Double ;begin//获取两个日期的天数f:=DaySpan(Now-100 , Now) ;i := DaysBetween(Now-100 , Now) ;Showmessage(intToStr(i)) ; //100Showmessage(FloatToStr(f)) ; //100end ;DayOfTheYear(返回指定TDateTime变量为该年的第几天)引用单元:DateUtils函数声明:Function DayOfTheYear ( const AValue : TDateTime) :Word; DayOfTheMonth(返回指定TDateTime变量为该月的第几天)引用单元:DateUtils函数声明:Function DayOfTheMonth ( const AValue : TDateTime) :Word; DayOfTheWeek(返回指定TDateTime变量为该周的第几天)引用单元:DateUtils函数声明:Function DayOfTheWeek ( const AValue : TDateTime) :Word; DayOfWeek(返回指定TDateTime变量为该周的第几天)引用单元:DateUtils函数声明:Function DayOfWeek ( Date : TDateTime) :Integer;范例D-24procedure TForm1.Button1Click(Sender : TObfect) ;vari : Integer ;begin//返回指定TDateTime为该年的第几天i := DayOfTheYear(Now) ;Showmessage(IntToStr(i)) ;//返回指定TDateTime为该月的第几天i := DayOfTheMonth(Now) ;Showmessage(IntToStr(i)) ;//返回指定TDateTime为该周的第几天(星期一为第一天)i := DayOfTheWeek(Now) ;Showmessage(IntToStr(i)) ;end ;StartOfADay(返回指定日期一天的开始)引用单元:DateUtils函数声明:Function StartOfADay ( const AYear , AMonth, ADay : Word) :TDateTime; Function StartOfADay ( const AYear , ADayOfYear : Word) :TDateTime;范例D-25procedure TForm1.Button1Click(Sender : TObfect) ;vartmpDateTime : TDateTime ;AYear , ADayOfYear , AMonth , ADay :Word ;beginAYear := 2001 ; //指定年度ADayOfYear := 32 ;.//第32天tmpDateTime :=StartOfADay(AYear , ADayOfYear) ;Showmessage(DateTimeToStr(tmpDateTime)) ; //2001/02/01AMonth := 1 ;ADay := 32 ; //从AMonth第一天起第32天TmpDateTime := StartOfADay(AYear , AMonth , ADay) ;Showmessage(DateTimeToStr(tmpDateTime)) ; //2001/02/01end ;EndOfADay(返回指定日期一天的结束时间)引用单元:DateUtils函数声明:Function EndOfADay ( const AYear, AMonth,ADay : Word) : TDateTime; Function EndOfADay ( const AYear, ADayOfYear : Word) : TDateTime;范例D-26procedure TForm1.Button1Click(Sender : TObfect) ;vartmpDateTime : TDateTime ;AYear , ADayOfYear , AMonth , ADay : Word ;beginAYear := 2001 ; //指定年度ADayOfYear := 32 ; //第32天tmpDateTime := EndOfADay(AYear , AMonth , ADay) ;Showmessage(DateTimeToStr(tmpDateTime)) ;//2001/02/01 PM 11:59:59end ;StartOfTheDay(返回指定TDateTime变量的一天开始时间)引用单元:DateUtils函数声明:Function StartToTheDay ( const AValue : TDateTime) :TDateTime;EndOfTheDay(返回指定TDateTime变量的一天结束时间)引用单元:DateUtils函数声明:Function EndOfTheDay ( const AValue : TDateTime) : TDateTime;范例D-27procedure TForm1.Button1Click(Sender : TObfect) ;vartmpDateTime : TDateTime ;begintmpDateTime := StartOfTheDay(Now) ;Showmessage(DateTimeToStr(tmpDateTime)) ;//YYYY/MM/DD AM 12:00:00tmpDateTime := EndOfTheDay(Now) ;Showmessage(DateTo //YYYY/MM/DD PM 11:59:59end ;IncDay(可为指定日期加上特定的天数)引用单元:DateUtils函数声明:Function IncDay ( const AValue : TDateTime ; const ANumberOfDays : Integer =1) :TDateTime;范例D-28procedure TForm1.Button1Click(Sender : TObfect) ;vartmpDateTime : TDateTime ;begintmpDateTime := Incday(Now,5) ;Showmessage(DateTimeToStr(tmpDateTime)) ;//时间部分并不会改变end ;WeeksInAYear(返回指定年度的周数)引用单元:DateUtils函数声明:Function WeeksInAYear( const AYear : Word) :Word;WeeksInYear(返回指定TDateTime变量的周数)引用单元:DateUtils函数声明:Function WeeksInYear ( const AValue : TDateTime) :Word;范例D-29procedure TForm1.Button1Click(Sender : TObfect) ;varweeks : word ;beginweeks :=weeksInAYear(2001) ;Showmessage(IntToStr(weeks)) ; //52Weeks := WeeksInYear(Now) ;Showmessage(IntToStr(weeks)) ; //52end ;WeeksOf(返回指定日期为该年的第几周)引用单元:DateUtils函数声明:Function WeekOf ( const AValue : TDateTime) :Word; WeekOfTheYear(返回指定日期为该年的第几周)引用单元:DateUtils函数声明:Function WeekOfTheYear ( const AValue : TDateTime) :Word; WeekOfTheMonth(返回指定日期为该月的第几周)引用单元:DateUtils函数声明:Function WeekOfTheMonth ( const AValue : TDateTime) :Word;范例D-30Procedure TForm1.Button1Click(Sender: TObject);VarI : Word;BeginI :=WeekOf(Now);Showmessage('weekof=' + IntToStr(i));i := WeekOfTheYear(Now );Showmessage('WeekOfTheYear =' + IntToStr(i));I := WeekOfTheMonth(Now);Showmessage('WeekOfTheMonth=' + IntToStr(i));end;WeeksBetween(返回两个指定日期间的周数)引用单元:DateUtils函数声明:Function WeeksBetween ( const ANow , AThen, : TDateTime) :Integer; WeekSpan(返回两个指定日期间的周数)引用单元:DateUtils函数声明:Function WeekSpan( const ANow ,AThen : TDateTime) :Double;范例D-31Procedure TForm1.Button1Click(Sender: TObject);VarI : Integer;F :Double;BeginI :=WeeksBetween(Now , Now + 29);Showmessage(InttoStr(i)); //4F := WeekSpan(Now , Now + 29);Showmessage(FloatToStr(f)); //4.14…end;StartOfAWeek(返回指定日期一周的开始时间)引用单元:DateUtils函数声明:Function StartOfAWeek ( const AYear , AWeekOfYear : Word; const ADayOfWeek : Word = 1) : TDateTime;EndOfAWeek(返回指定日期一周的结束时间)引用单元:DateUtils函数声明:Function EndOfAWeek ( const AYear , AWeekOfYear : Word; const ADayOfWeek : Word = 7) : TDateTime;范例D-32Procedure TForm1.Button1Click(Sender: TObject);VartempDateTime: TDateTime;AYear , AWeekOfYear , ADayOfWeek : Word;BeginAYear := 2001;AWeekOfYear :=2; //第二周ADayOfWeek :=1; //第一天tempDateTime := StartofAweek(AYear, AWeekOfYear, ADayOfWeek);//2001/01/08 AM 12:00:00:00showmessage(DateTimeToStr(tempDateTime));//AYearf := 2001;//AWeekofYear :=2; //第二周ADayOfWeek : =7 ;// 第七天tempDatetime := EndOfAWeek(AYear, AWeekOfYear, AdayOfWeek);//2001/01/14 Pm 11:59:59Showmessage(DateTimeToStr(tempDateTime)); //4.14…end;StartOfTheWeek(返回指定日期一周的开始时间)引用单元:DateUtils函数声明:Function StartOfTheWeek ( const AValue : TDateTime) :TDateTime; EndOfTheWeek(返回指定日期一周的结束时间)引用单元:DateUtils函数声明:Function EndOfTheWeek ( const AValue : TDateTime) :TDateTime;范例D-33Procedure TForm1.Button1Click(Sender: TObject);VartempDateTime : TDateTime;begintempDateTime :=StartOfTheWeek(Now);//YYYY / MM / DD AM 12:00:00:00Showmessage(DateTimeToStr(tempDateTime));tempDateTime := EndOfTheWeek(Now);//YYYY / MM / DD + 6 PM 11:59 :59Showmessage(DateTimeToStr(tempDateTime));end;IncWeek(将指定日期加上指定周数)引用单元:DateUtils函数声明:Function IncWeek ( const AValue : TDateTime; const ANumberOfWeeks : Integer = 1) :TDateTime;范例D-34:Procedure TForm1.Button1Click(Sender: TObject);VartempDateTime : TDateTime;begintempDateTime :=IncWeek(Now , 5); //加上5周Showmessage(DateTimeToStr(tempDateTime));end;D.3 时间处理函数函数名称单元文件所代表的意义HoursBetweenDateUtils此函数可返回两个指定TDateTime变量间的小时数,返回值不包含小数部分.HourSpanDateUtils此函数可返回两个指定TDateTime变量间的小时数,返回值包含小数部分.HourOfDateUtils此函数可获取TDateTime格式中的小时数,其返回值为Word类型,介于0~23之间HourOfTheYearDateUtils此函数可返回指定TDateTime变量为该年的第几小时HourOfTheMonthDateUtils此函数可返回指定TDateTime变量为该月的第几小时HourOfTheWeekDateUtils此函数可返回指定TDateTime变量为该周的第几小时HourOfTheDayDateUtils此函数可返回指定TDateTime变量为该日的第几小时,返回值介于0~23之间IncHourDateUtils此函数可将指定日期加上指定小时数,其返回值为TDateTime类型MinutesBetweenDateUtils此函数可返回两个指定TDateTime变量间的分钟数,其返回值不包含小数部分MinuteSpanDateUtils此函数可返回两个指定TDateTime变量间的分钟数,返回值包含小数部分MinuteOfDateUtils此函数可获取TDateTime格式中的分钟数,其返回值为Word类型,介于0~59之间MinuteOftheYearDateUtils此函数可返回指定TDateTime变量为该年的第几分钟MinuteOfTheMonthDateUtils此函数可返回指定TDateTime变量为该月的第几分钟MinuteOfTheWeekDateUtils此函数可返回指定TDateTime变量为该周的第几分钟MinuteOfTheDayDateUtils此函数可返回指定TDateTime变量为该日的第几分钟MinuteOfTheHourDateUtils此函数可返回指定TDateTime变量为该小时的第几分钟IncMinuteDateUtils此函数可将指定日期加上指定分钟数,其返回值为TDateTime类型SecondsBetweenDateUtils此函数可返回两个指定TDateTime变量间的秒数,返回值不包含小数部分SecondSpanDateUtils此函数可返回两个指定TDateTime变量间的秒数,返回值包含小数部分SecondOfDateUtils此函数可获取TDateTime格式中的秒数,其返回值为Word类型,介于0~59之间SecondOfTheyearDateUtils此函数可返回指定TDateTime变量为该年的第几秒SecondOfTheMonthDateUtils此函数可返回指定TDateTime变量为该月的第几秒SecondOfTheWeekDateUtils此函数可返回指定TDateTime变量为该周的第几秒SecondOfTheDayDateUtils此函数可返回指定TDateTime变量为该日的第几秒SecondOfTheHourDateUtils此函数可返回指定TDateTime变量为该小时的第几秒SecondOfTheMinuteDateUtils此函数可返回指定TDateTime变量为该分钟的第几秒IncSecondDateUtils此函数可将指定日期加上指定秒数,其返回值为TDateTime类型MilliSecondsBetweenDateUtils此函数可返回两个指定TDateTime变量间的毫秒数,返回值不包含小数部分MilliSecondSpanDateUtils此函数可返回两个指定TDateTime变量间的毫秒数,返回值包含小数部分MilliSecondOfDateUtils此函数可获取TDateTime格式中的毫秒数,其返回值为Word类型,介于0~999之间MilliSecondOfTheYearDateUtils此函数可返回指定TDateTime变量为该年的第几毫秒MilliSecondOfTheMonthDateUtils此函数可返回指定TDateTime变量为该月的第几毫秒MilliSecondOfTheWeekDateUtils此函数可返回指定TDateTime变量为该周的第几毫秒MilliSecondOfTheDayDateUtils此函数可返回指定TDateTime变量为该日的第几毫秒MilliSecondOfTheHourDateUtils此函数可返回指定TDateTime变量为该小时的第几毫秒MilliSecondOfTheMinuteDateUtils此函数可返回指定TDateTime变量为该分钟的第几毫秒MilliSecondOfTheSecondDateUtils此函数可返回指定TDateTime变量为该秒的第几毫秒IncMilliSecondDateUtils此函数可将指定日期加上指定毫秒数,其返回值为TDateTime类型HoursBetween(返回两个指定日期间的小时数)引用单元:DateUtils函数声明:Function HoursBetween ( const ANow , AThen : TDateTime) : Int64;HourSpan(返回两个指定日期间的小时数)引用单元:DateUtils函数声明:Function HourSpan ( const ANow , AThen : TDateTime) :Double; 范例D-35procedure TForm1.Button1Click(Sender : TObfect) ;varHours : Integer ;f : Double ;beginHours := HoursBetween(Now , Now+0.9) ; //加上0.9天Showmessage(FloatToStr(f)) ; //21f := HourSpan(Now , Now+0.9) ; //加上0.9天Showmessage(FloatToStr(f)) ; //21.6….end ;HourOf(获取TDateTime格式中的时数)引用单元:DateUtils函数声明:Function HourOf ( const AValue: TDateTime) :Word; HourOfTheYear(返回指定TDateTime变量为该年的第几小时)引用单元:DateUtils函数声明:Function HourOfTheYear ( const AValue : TDateTime) :Word; HourOfTheMonth(返回指定TDateTime变量为该月的第几小时)引用单元:DateUtils函数声明:Function HourOfTheMonth ( const AValue : TDateTime) :Word; HourOfTheWeek(返回指定TDateTime变量为该周的第几小时)引用单元:DateUtils函数声明:Function HourOfTheWeek ( const AValue : TDateTime) :Word; HourOfTheDay(返回指定TDateTime变量为该日的第几小时)引用单元:DateUtils函数声明:Function HourOfTheDay( const AValue : TDateTime) :Word;范例D-36procedure TForm1.Button1Click(Sender : TObfect) ;varHours : Integer ;BeginHours := HourOf(Now) ;Showmessage('HourOf = '+ IntToStr(Hours)) ;Hours := HourOfTheYear(How) ;Showmessage('HourOfTheYear = '+IntToStr(Hours)) ;Hours := HourOfTheMonth(How) ;Showmessage('HourOfTheMonth = '+IntToStr(Hours)) ;Hours := HourOfTheWeek(How) ;Showmessage('HourOfTheWeek = '+IntToStr(Hours)) ;Hours := HourOfTheDay(How) ;Showmessage('HourOfTheDay = '+IntToStr(Hours)) ;end ;IncHour(将指定日期加上指定小时数)引用单元:DateUtils函数声明:Function IncHour ( const AValue : TDateTime , const ANumberAOfHours : Int64=1) :TDateTime;范例D-37procedure TForm1.Button1Click(Sender : TObfect) ;varTempDateTime : TDateTime ;beginTempDateTime := IncHour(Now, 23) ; //增加23小时Showmessage(DateTimeToStr(TempDateTime)) ;end ;MinuteBetween(返回两个指定TDateTime变量间的分钟数)引用单元:DateUtils函数声明:Function MinuteBetween ( const Anew, AThen : TDateTime) :Int64;MinuteSpan(返回两个指定TDateTime变量间的分钟数)引用单元:DateUtils函数声明:Function MinuteSpan ( const Anew,AThen : TDateTime) :Double;MinuteOf(获取TDateTime格式中的分钟数)引用单元:DateUtils函数声明:Function MinuteOf( const AValue : TDateTime) :Word;范例D-38procedure TForm1.Button1Click(Sender : TObfect) ;vari := Integer ;'f -= Double ;w := Word ;begini := MinutesBetween(Now , Now + 1) ; //增加24小时Showmessage(IntToStr(i)) ; //1440f := MinuteSpan(Now , Now + 1.1) ; //增加24*1.1小时Showmessage(FloatToStr(f)) ; //1583.99….w := MinuteOf(Now) ; //显示当前的分钟数Showmessage(IntToStr(w)) ; //介于0~59之间End ;:MinuteOfTheYear(返回指定TDateTime变量为该年的第几分钟)引用单元:DateUtils函数声明:Function MinuteOfTheYear ( const AValue : TDateTime) :LongWord; MinuteOfTheMonth(返回指定TDateTime变量为该月的第几分钟)引用单元:DateUtils函数声明:Function MinuteOfTheMonth ( const AValue : TDateTime) :Word;MinuteOfTheWeek(返回指定TDateTime变量为该周的第几分钟)引用单元:DateUtils函数声明:Function MinuteOfTheWeek ( const AValue : TDateTime) :Word; MinuteOfTheDay(返回指定TDateTime变量为该日的第几分钟)引用单元:DateUtils函数声明:Function MinuteOfTheDay ( const AValue : TDateTime) :Word;MinuteOfTheHour(返回指定TDateTime变量为该小时的第几分钟)引用单元:DateUtils函数声明:Function MinuteOfTheHour ( const AValue : TDateTime) :Word;范例D-39procedure TForm1.Button1Click(Sender : TObfect) ;varMinutes : Integer ;beginMinutes := MinuteOfTheYear(Now) ;Showmessage('MinuteOfTheYear =' + IntToStr(Minutes)) ;Minutes := MinuteOfTheMonth(Now) ;Showmessage('MinuteOfTheMonth =' + IntToStr(Minutes)) ;Minutes := MinuteOfTheWeek(Now) ;Showmessage('MinuteOfTheWeek =' + IntToStr(Minutes)) ;Minutes := MinuteOfTheDay(Now) ;Showmessage('MinuteOfTheDay =' + IntToStr(Minutes)) ;Minutes := MinuteOfTheHour(Now) ;Showmessage('MinuteOfTheHour =' + IntToStr(Minutes)) ;End ;IncMinute(将指定日期加上指定分钟数)引用单元:DateUtils函数声明:Function IncMinute ( const AValue : TDateTime; const ANumberOfMinutes: Int64 = 1) :TDateTime;范例D-40procedure TForm1.Button1Click(Sender : TObfect) ;varTempDateTime : TDateTime ;BeginTempDateTime := IncMinute(Now ,40) ; //增加40分钟Showmessage(DateTimeToStr(TempDateTime)) ;End ;SecondsBetween(返回两个指定TDateTime变量间的秒数)引用单元:DateUtils函数声明:Function SecondsBetween ( const ANow, AThen : TDateTime) :Int64;SecondSpan(返回两个指定TDateTime变量间的秒数)引用单元:DateUtils函数声明:Function SecondSpan ( const ANow, AThen : TDateTime) :Double;SecondOf(获取TDateTime格式中的秒数)引用单元:DateUtils函数声明:Function SecondOf ( const AValue : TDateTime) :Word;范例D-41procedure TForm1.Button1Click(Sender : TObfect) ;vari : Integer ;f : Double ;w : Word ;begini :=SecondsBetween(Now ,Now + 1) ; //增加24小时Showmessage(IntToStr(i)) ; //86400f := SecondSpan(Now , Now + 1.1) ; //增加24*1.1小时Showmessage(FloatToStr(f)) ; //95039.99….w := SecondOf(Now) ; //显示当前的秒数Showmessage(IntToStr(w)) ; //介于0~59之间End ;SecondOfTheYear(返回指定TDateTime变量为该年的第几秒)引用单元:DateUtils函数声明:Function SecondOfTheYear ( const AValue : TDateTime) :LongWord; SecondOfTheMonth(返回指定TDateTime变量为该月的第几秒)引用单元:DateUtils函数声明:Function SecondOfTheMonth ( const AValue : TDateTime) :LongWord; SecondOfTheWeekr(返回指定TDateTime变量为周年的第几秒)引用单元:DateUtils函数声明:Function SecondOfTheWeek ( const AValue : TDateTime) :LongWord; SecondOfTheDay(返回指定TDateTime变量为该周的第几秒)引用单元:DateUtils函数声明:Function SecondOfTheDay ( const AValue : TDateTime) :LongWord; SecondOfTheHour(返回指定TDateTime变量为该小时的第几秒)引用单元:DateUtils函数声明:Function SecondOfTheHour ( const AValue : TDateTime) :Word; SecondOfTheMinute(返回指定TDateTime变量为该分钟的第几秒)引用单元:DateUtils函数声明:Function SecondOfTheMinute ( const AValue : TDateTime) :Word;范例D-42procedure TForm1.Button1Click(Sender : TObfect) ;varSeconds : Integer ;beginSeconds := SecondOfTheYear(Now) ;Showmessage('SecondOfTheYear = ' + IntToStr(Seconds)) ;Seconds := SecondOfTheMonth(Now) ;Showmessage('SecondOfTheMonth = ' + IntToStr(Seconds)) ;Seconds := SecondOfTheWeek(Now) ;。
delphi时间格式操作
delphi时间格式操作FormatDateTime('yyyy-mm-dd hh:nn:ss',Now)FormatDateTime('hh:mm:ss:zz',Now)if (TimeOf(now) < pub_StartWorkTime) or (TimeOf(now) > pub_EndWorkTime) thenexit; //⾮⼯作时间退出读inipub_StartWorkTime := MyIniFile.Readtime('Setup','StartWorkTime',strtotime('08:00'));pub_EndWorkTime := MyIniFile.Readtime('Setup','EndWorkTime',strtotime('23:59'));Delphi中TFileTime、TSystemTime 及 DOS 时间 核⼼提⽰://TSystemTime 是系统定义的结构, ⼀看就是最⽅便实⽤的那种, 但要占 16 个字节:TSystemTime = recordwYear: Word;wMonth: Word;wDayOf...//TSystemTime 是系统定义的结构, ⼀看就是最⽅便实⽤的那种, 但要占 16 个字节:TSystemTime = recordwYear: Word;wMonth: Word;wDayOfWeek: Word;wDay: Word;wHour: Word;wMinute: Word;wSecond: Word;wMilliseconds: Word;end;//TFileTime 也是系统定义的结构, 同 TDateTime ⼀样⼤⼩, 但结构原理完全不同:TFileTime = recorddwLowDateTime: DWORD;dwHighDateTime: DWORD;end;TFileTime 记录的是从 1601-1-1 起的时间值, 以 100 纳秒(也就是万分之⼀毫秒)为单位//DOS 时间就是⼀个 32 位(4字节)的整数(Integer), 好像没有专门的结构, 可⽤ LongRec 等代为解析.DOS 时间的尺⼨是 TFileTime、TDateTime 的 1/2, 是 TSystemTime 的 1/4; 因此不很精确.它只能表⽰从 1980-2107 之间的时间, 且只能精确到 2 秒.//下⾯⼏个函数⼀看就知道谁转换到谁:SysUtils.DateTimeToSystemTime();SysUtils.SystemTimeToDateTime();Windows.SystemTimeToFileTime();Windows.FileTimeToSystemTime();Windows.FileTimeToDosDateTime();Windows.DosDateTimeToFileTime();//但并没有直接给 TFileTime 和 TDateTime 直接转换的函数;//下⾯两个函数是 TDateTime 和 DOS 时间的转换; ⽂件的创建、修改、访问时间就是⽤这个 DOS 时间记录的.SysUtils.DateTimeToFileDate();SysUtils.FileDateToDateTime();{转换到 DOS 时间的例⼦:}varT: TDateTime;F,DosTime: Integer;FileTime: TFileTime;SystemTime: TSystemTime;begin{构建⼀个 TDateTime, 并转换到 DOS 时间}T := EncodeDateTime(2009, 5, 22, 11, 22, 33, 999);F := DateTimeToFileDate(T);ShowMessage(IntToStr(F)); //985029328; 注意这个数很⼩, 下⾯会发现不精确{再从 DOS 时间转回 TDateTime}T := FileDateToDateTime(F);ShowMessage(FormatDateTime('yyyy-m-d h:m:s:zzz', T)); //2009-5-22 11:22:32:000; 只精确到 2 秒{TDateTime -> TSystemTime -> TFileTime -> DOS 时间}DateTimeToSystemTime(T, SystemTime);SystemTimeToFileTime(SystemTime, FileTime);FileTimeToDosDateTime(FileTime, LongRec(DosTime).Hi, longRec(DosTime).Lo);ShowMessage(IntToStr(SizeOf(SystemTime))); //985029328; 和上⾯得到的值⼀样end;DateTimeToFileDate 转换出的时间不是 TFileTime, ⽽是 Dos 时间或叫⽂件时间;譬如我们⽤ FileAge 函数返回的⽂件最后修改的时间(⼀个 Integer)就是个 Dos 时间.{读取记事本程序最后被修改的时间}varDosTime: Integer;FileTime: TFileTime;SysTime: TSystemTime;DateTime: TDateTime;str: string;beginDosTime := FileAge('C:\Windows\System32\Notepad.exe');ShowMessage(IntToStr(DosTime)); //948804037; 这是读取结果{转换为可以理解的格式}DosDateTimeToFileTime(LongRec(DosTime).Hi, LongRec(DosTime).Lo, FileTime);FileTimeToSystemTime(FileTime, SysTime);str := Format('%d年%d⽉%d⽇ %d:%d:%d', [SysTime.wYear, SysTime.wMonth,SysTime.wDay, SysTime.wHour, SysTime.wMinute, SysTime.wSecond]);ShowMessage(str); //2008年4⽉13⽇ 19:14:10{如果仅仅是要这个时间, 可以这样}FileAge('C:\Windows\System32\Notepad.exe', DateTime);ShowMessage(DateTimeToStr(DateTime)); //2008-4-13 19:14:10end;⼜是我们可能只需要⼀个 TSystemTime 格式的时间, 没必要转来转去, 可以直接⽤ GetLocalTime 函数获取: varSysTime: TSystemTime;DT1, DT2: TDateTime;beginGetLocalTime(SysTime);DT1 := SystemTimeToDateTime(SysTime);DT2 := Now;{这两个时间显⽰应该是⼀样的}ShowMessage(DateTimeToStr(DT1));ShowMessage(DateTimeToStr(DT2));end;另外 FileTimeToLocalFileTime 和 LocalFileTimeToFileTime 是本地时间和 UTC(国际标准计时) 的转换;⽤ API 函数获取的 TFileTime 时间都是 UTC 格式的, 需要转换使⽤.Tags:。
PHP获取当前日期和时间及格式化方法参数
PHP获取当前日期和时间及格式化方法参数PHP获取当前日期和时间及格式化方法参数这篇文章主要介绍了PHP获取当前日期和时间及格式化方法参数,本文先是讲解了获取当前日期时间的方法,其后总结了格式化参数,需要的朋友可以参考下.使用函式 date() 实现复制代码代码如下:<?php echo $showtime=date("Y-m-d H:i:s");?>显示的格式: 年-月-日小时:分钟:秒相关时间参数:a - "am" 或是 "pm"A - "AM" 或是 "PM"d - 几日,二位数字,若不足二位则前面补零; 如: "01" 至 "31"D - 星期几,三个英文字母; 如: "Fri"F - 月份,英文全名; 如: "January"h - 12 小时制的小时; 如: "01" 至 "12"H - 24 小时制的小时; 如: "00" 至 "23"g - 12 小时制的小时,不足二位不补零; 如: "1" 至 12"G - 24 小时制的小时,不足二位不补零; 如: "0" 至 "23"i - 分钟; 如: "00" 至 "59"j - 几日,二位数字,若不足二位不补零; 如: "1" 至 "31"l - 星期几,英文全名; 如: "Friday"m - 月份,二位数字,若不足二位则在前面补零; 如: "01" 至 "12"n - 月份,二位数字,若不足二位则不补零; 如: "1" 至 "12"M - 月份,三个英文字母; 如: "Jan"s - 秒; 如: "00" 至 "59"S - 字尾加英文序数,二个英文字母; 如: "th","nd"t - 指定月份的.天数; 如: "28" 至 "31"U - 总秒数w - 数字型的星期几,如: "0" (星期日) 至 "6" (星期六) Y - 年,四位数字; 如: "1999"y - 年,二位数字; 如: "99"z - 一年中的第几天; 如: "0" 至 "365"【PHP获取当前日期和时间及格式化方法参数】。
Delphi格式化函数:Format.
Format('%0.2d',[1] = '01'; //2表示两位 // formatdatetime('aaa',now;//当前星期formatdatetime('c',now;//以2003-8-16 23:03:23的形式显示当前日期和时间formatdatetime('d',now;//显示当前的日期 1被显示成1 formatdatetime('dd',now;//显示当前的日期 1被显示成01 formatdatetime('ddd',now;//显示当前的星期formatdatetime('ddddd',now;//以2003-8-1的形式显示年月日formatdatetime('dddddd',now;//以2003年8月1日的形式显示年月日formatdatetime('dddddd ddd',now;//以‘2003年8月1日星期五’的形式显示年月日及星期 formatdatetime('e',now;//显示年的最后一位2003被显示成3formatdatetime('ee',now;//显示年的最后二位2003被显示成03formatdatetime('eee',now;//显示年2003被显示成2003 formatdatetime('h',now;//显示小时1被显示成1 formatdatetime('hh',now;//显示小时1被显示成01 formatdatetime('m',now;//显示月1被显示成1 formatdatetime('mm',now;//显示月1被显示成01 formatdatetime('mmm',now;//以‘八月’的形式显示月份formatdatetime('n',now;//显示当前分钟1被显示成1 formatdatetime('nn',now;//显示当前分钟1被显示成01 formatdatetime('s',now;//显示当前秒1被显示成1 formatdatetime('ss',now;//显示当前秒1被显示成01 formatdatetime('t',now;//以1:05的形式显示小时和分钟 formatdatetime('tt',now;//以1:06:13的形式显示小时和分钟和秒formatdatetime('y',now;////显示年的最后二位2003被显示成03formatdatetime('yyy',now;//显示年2003被显示成2003 formatdatetime('z',now;//显示当前毫秒1被显示成1 formatdatetime('zz',now;//显示当前毫秒1被显示成01 formatdatetime('zzz',now;//显示当前毫秒1被显示成001 除上面之外的字母或字符就直接显示。
DELPHI Variant变量的使用技巧
DELPHI Variant变量的使用技巧。
delphi 为了完全支持OLE,32位Delphi 增加了Variant 数据类型,本节将从宏观角度来分析这种数据类型。
实际上,Variant类型对Pascal语言有普遍而深入的影响,Delphi 控件库中与OLE 无关的地方也使用到这种类型。
Variant变量没有类型一般说来,你可以用Variant 变量存储任何数据类型,对它执行各种操作和类型转换。
需要注意的是:这违反了Pascal 语言的一贯原则,有悖于良好的编程习惯。
variant 变量的类型检查和计算在运行期间才进行,编译器不会提示代码中的潜在错误,这些错误在进一步测试中才能发现。
总之,你可以认为包含variant变量的代码是解释性代码,正如解释性代码一样,许多操作直到执行时才能知道,这对代码运行速度会有很大的影响。
上面对Variant 类型的使用提出了警告,现在来看看Variant 类型究竟能干什么。
基本上说,如果声明了一个variant 变量:varV: Variant;你就可以把各种不同类型的值赋给它:V := 10;V := 'Hello, World';V := 45.55;一旦得到一个variant 值,你可以把它拷贝给任何兼容或不兼容的数据类型。
如果你把值赋给不兼容的数据类型,Delphi 会力尽所能进行转换,无法转换则颁布一个运行时间错误。
实际上,variant变量中不仅包含了数据还包含有类型信息,并允许一系列运行时间操作,这些操作很方便,但运行速度慢且安全性差。
见例VariTest,它是上面代码的扩展。
窗体上有三个编辑框,一对按钮,第一个按钮的OnClick 事件代码如下:procedure TForm1.Button1Click(Sender: TObject);varV: Variant;beginV := 10;Edit1.Text := V;V := 'Hello, World';Edit2.Text := V;V := 45.55;Edit3.Text := V;end;很有趣是不是?你可以把一个值为字符串的variant 变量赋给编辑框Text 属性,还可以把值为整数或浮点数的variant 变量赋给Text 属性。
delphi 时间间隔函数
Delphi中的时间间隔函数1. 概述在Delphi中,时间间隔函数用于计算时间的差异,以便在程序中测量时间间隔或执行定时任务。
Delphi提供了多个时间间隔函数,包括Now、GetTickCount、GetTime、FormatDateTime等。
这些函数可以帮助开发人员更方便地处理时间相关的操作。
本文将详细介绍Delphi中的时间间隔函数,包括函数的定义、用途和工作方式等。
通过深入了解这些函数,开发人员可以更好地利用它们来处理时间相关的任务。
2. Now函数2.1 定义Now函数用于获取当前的系统时间。
它返回一个TDateTime类型的值,表示当前的日期和时间。
2.2 用途Now函数常用于记录事件的发生时间、计算时间间隔以及执行定时任务等。
通过获取当前时间,开发人员可以在程序中准确地记录和处理时间相关的操作。
2.3 示例代码varcurrentTime: TDateTime;begincurrentTime := Now;ShowMessage(DateTimeToStr(currentTime));end;上述代码演示了如何使用Now函数获取当前时间,并通过ShowMessage函数将其显示在一个对话框中。
3. GetTickCount函数3.1 定义GetTickCount函数用于获取自系统启动以来经过的毫秒数。
它返回一个DWORD类型的值,表示从系统启动到当前时间所经过的毫秒数。
3.2 用途GetTickCount函数常用于测量程序执行的时间间隔,或者用于实现简单的定时功能。
通过获取系统启动到当前时间所经过的毫秒数,开发人员可以计算程序执行的时间,或者根据一定的时间间隔执行特定的操作。
3.3 示例代码varstartTime, endTime, elapsedTime: DWORD;beginstartTime := GetTickCount;// 执行一些操作endTime := GetTickCount;elapsedTime := endTime - startTime;ShowMessage('程序执行时间:' + IntToStr(elapsedTime) + '毫秒');end;上述代码演示了如何使用GetTickCount函数计算程序的执行时间。
在Delphi中处理数据库日期型字段的显示与输入
专栏:Delphi技术文章编号:934 文章类别:原创作者:yh 加贴时间:00-5-20 11:57:05在Delphi中处理数据库日期型字段的显示与输入关键词:Delphi - MIS---- 在使用Delphi进行数据库设计时,不可避免的会涉及到日期型字段的输入问题。
不过与Microsoft的Access 97中文版等相比,Delphi本身提供的日期型字段的显示和输入方式并不适合中国人的习惯。
因此对于日期型字段的处理,大家提出了不少解决方法,但是处理结果在显示和输入上并不统一,例如显示时可以实现“yyyy年mm月dd日”的格式,但是在输入时还是要按照国外的习惯用“yyyy-mm-dd”的形式进行输入;而使用TdateTimePicker 进行选择输入总嫌麻烦;有些方法还要修改系统的一些设置属性,因而在进行软件发布时要将系统的属性进行调整;采用第三方控件的方式则还要将控件打包发布。
而且对于常用到的“1999年”、“1999年11月”等日期格式,没有进行相应的处理。
这里我根据自己的实践,利用TField的OnGetText和OnSetText两个事件的结合,以期达到日期型字段的显示和输入的统一,并可以处理我们常见的“1999年”、“1999年11月”等日期形式的显示和输入,全部利用Delphi提供的事件实现,不需要修改任何系统设置。
进行相应的扩展后,还可以用于时间的显示和输入,如“hh点mm分”等。
同时,由于是直接控制TField的事件,所以不论使用TDBGrid还是用TDBEdit,都可以正常的进行统一处理,而不必分开考虑。
采用类似的方法,还可以应用于非数据库应用程序中的日期输入。
---- 1 基本思想---- 利用TField的EditMask属性,将其同时作为显示和输入的掩码,在TField的OnGetText 事件中处理日期字段的显示,而在OnSetText事件中处理输入值的有效性判断。
delphi中SQL中日期的处理
SQL 中日期的处理通常,你需要获得当前日期和计算一些其他的日期,例如,你的程序可能需要判断一个月的第一天或者最后一天。
你们大部分人大概都知道怎样把日期进行分割(年、月、日等),然后仅仅用分割出来的年、月、日等放在几个函数中计算出自己所需要的日期!在这篇文章里,我将告诉你如何使用DATEADD和DA TEDIFF函数来计算出在你的程序中可能你要用到的一些不同日期。
在使用本文中的例子之前,你必须注意以下的问题。
大部分可能不是所有例子在不同的机器上执行的结果可能不一样,这完全由哪一天是一个星期的第一天这个设置决定。
第一天(DATEFIRST)设定决定了你的系统使用哪一天作为一周的第一天。
所有以下的例子都是以星期天作为一周的第一天来建立,也就是第一天设置为7。
假如你的第一天设置不一样,你可能需要调整这些例子,使它和不同的第一天设置相符合。
你可以通过@@DATEFIRST函数来检查第一天设置。
为了理解这些例子,我们先复习一下DATEDIFF和DA TEADD函数。
DATEDIFF函数计算两个日期之间的小时、天、周、月、年等时间间隔总数。
DATEADD函数计算一个日期通过给时间间隔加减来获得一个新的日期。
要了解更多的DATEDIFF和DATEADD函数以及时间间隔可以阅读微软联机帮助。
使用DA TEDIFF和DA TEADD函数来计算日期,和本来从当前日期转换到你需要的日期的考虑方法有点不同。
你必须从时间间隔这个方面来考虑。
比如,从当前日期到你要得到的日期之间有多少时间间隔,或者,从今天到某一天(比如1900-1-1)之间有多少时间间隔,等等。
理解怎样着眼于时间间隔有助于你轻松的理解我的不同的日期计算例子。
一个月的第一天第一个例子,我将告诉你如何从当前日期去这个月的最后一天。
请注意:这个例子以及这篇文章中的其他例子都将只使用DA TEDIFF和DATEADD函数来计算我们想要的日期。
每一个例子都将通过计算但前的时间间隔,然后进行加减来得到想要计算的日期。
Delphi格式化函数:Format.
Format('%0.2d',[1] = '01'; //2表示两位 // formatdatetime('aaa',now;//当前星期formatdatetime('c',now;//以2003-8-16 23:03:23的形式显示当前日期和时间formatdatetime('d',now;//显示当前的日期 1被显示成1 formatdatetime('dd',now;//显示当前的日期 1被显示成01 formatdatetime('ddd',now;//显示当前的星期formatdatetime('ddddd',now;//以2003-8-1的形式显示年月日formatdatetime('dddddd',now;//以2003年8月1日的形式显示年月日formatdatetime('dddddd ddd',now;//以‘2003年8月1日星期五’的形式显示年月日及星期 formatdatetime('e',now;//显示年的最后一位2003被显示成3formatdatetime('ee',now;//显示年的最后二位2003被显示成03formatdatetime('eee',now;//显示年2003被显示成2003 formatdatetime('h',now;//显示小时1被显示成1 formatdatetime('hh',now;//显示小时1被显示成01 formatdatetime('m',now;//显示月1被显示成1 formatdatetime('mm',now;//显示月1被显示成01 formatdatetime('mmm',now;//以‘八月’的形式显示月份formatdatetime('n',now;//显示当前分钟1被显示成1 formatdatetime('nn',now;//显示当前分钟1被显示成01 formatdatetime('s',now;//显示当前秒1被显示成1 formatdatetime('ss',now;//显示当前秒1被显示成01 formatdatetime('t',now;//以1:05的形式显示小时和分钟 formatdatetime('tt',now;//以1:06:13的形式显示小时和分钟和秒formatdatetime('y',now;////显示年的最后二位2003被显示成03formatdatetime('yyy',now;//显示年2003被显示成2003 formatdatetime('z',now;//显示当前毫秒1被显示成1 formatdatetime('zz',now;//显示当前毫秒1被显示成01 formatdatetime('zzz',now;//显示当前毫秒1被显示成001 除上面之外的字母或字符就直接显示。
delphi 时间间隔函数
delphi 时间间隔函数Delphi是一种基于对象的Pascal语言,是一种专为Microsoft Windows平台开发的编程语言。
在Delphi中,时间间隔函数是非常重要的,因为它们可以用于对时间进行测量、计算和操作。
Delphi中有很多时间间隔函数可供选择,以下将介绍一些常用的时间间隔函数。
一、Now和DateTime在Delphi中,Now函数可用于获取当前日期和时间。
它返回一个TDateTime类型的值,该值表示从1899年12月30日至今的天数和时间。
例子:varcurrentTime: TDateTime;begincurrentTime := Now;ShowMessage(DateTimeToStr(currentTime));end;DateTimeToStr函数可用于将TDateTime类型的值转换为字符串。
二、Date和TimeDate函数返回当前日期的TDateTime值,不包括时间部分;而Time函数返回当前时间的TDateTime值,不包括日期部分。
例子:varcurrentDate: TDateTime;currentTime: TDateTime;begincurrentDate := Date;ShowMessage(DateToStr(currentDate));currentTime := Time;ShowMessage(TimeToStr(currentTime));end;DateToStr和TimeToStr函数可用于将TDateTime类型的值转换为字符串。
三、Now - ThenNow - Then是一个重要的时间间隔计算函数,它可以计算两个TDateTime值之间的时间间隔,以天、小时、分钟和秒为单位。
例子:varstartTime: TDateTime;endTime: TDateTime;timeInterval: TDateTime;beginstartTime := Now;Sleep(5000); //模拟一个5秒钟的时间间隔endTime := Now;timeInterval := endTime - startTime;ShowMessage(FloatToStr(timeInterval) + '天');ShowMessage(FloatToStr(timeInterval * 24) + '小时');ShowMessage(FloatToStr(timeInterval * 24 * 60) + '分钟');ShowMessage(FloatToStr(timeInterval * 24 * 60 * 60) + '秒');end;四、IncDay、IncHour、IncMinute和IncSecondIncDay函数用于对TDateTime值进行日期增量操作,IncHour函数用于对TDateTime值进行小时增量操作,IncMinute函数用于对TDateTime值进行分钟增量操作,IncSecond函数用于对TDateTime值进行秒增量操作。
如何获得系统当前时间并规范格式
如何获得系统当前时间并规范格式在安卓编程中,很多应用会用到系统当前的时间,并且要格式规范。
获得系统当前时间的方式也有很多种,这里我暂时只列出一种,完整的编码过程如下:1,在程序中写个返回值为String类型的静态方法:返回值为规范格式的时间字符串public static String getDate() {Calendar ca = Calendar.getInstance();int year = ca.get(Calendar.YEAR);//获取年份int month=ca.get(Calendar.MONTH)+1;//获取月份int day=ca.get(Calendar.DATE);//获取日int hour=ca.get(Calendar.HOUR_OF_DAY);//小时int minute=ca.get(Calendar.MINUTE);//分;int second=ca.get(Calendar.SECOND);//秒String time;if(minute<10&&second<10){time = year+"-"+month+"-"+day+" "+hour+":"+"0"+minute+":"+"0"+second;}else if(minute<10&&second>=10){time = year+"-"+month+"-" +day+" "+hour+":"+"0"+minute+":"+second;}else if(minute>=10&&second<10){time = year+"-"+month+"-"+day+" "+hour+":"+minute+":"+"0"+second; }else{time = year+"-"+month+"-"+day+" "+hour+":"+minute+":"+second;}return time;}2,在需要用时间的地方调用:String time = getDate(); //调用系统时间。
DELPHI获得系统当前时间日期和格式化时间
获得系统当前时间本例中主要应用了FormatDateTime函数,此函数主要用于将日期时间格式化为指定的字符串。
利用该函数可以输出许多形式的时间格式。
程序运行结果如图6.1所示主要代码如下:procedure TForm1.Button1Click(Sender: TObject);beginLabel1.Caption := FormatDateTime('hh:nn:ss',Now());end;获得系统当前日期当用户单击窗体中的按钮时,程序会利用DateTimeToStr函数将当前日期转换为一个字符串显示在标签上。
程序运行结果如图6.2所示。
图6.2 获得系统当前日期主要代码如下:procedure TForm1.Button1Click(Sender: TObject);beginLabel1.Caption := DateTimeToStr(Date());end;将日期时间格式化为指定格式本例将日期时间格式化为指定格式主要是应用了FormatDateTime函数。
使用该函数可以将当前日期时间格式化为自定义格式。
程序运行结果如图6.3所示。
图6.3 将日期时间格式化为指定格式主要代码如下:procedure TForm1.Timer1Timer(Sender: TObject);beginLabel1.Caption := DateTimeToStr(now());end;procedure TForm1.Button1Click(Sender: TObject);beginLabel2.Caption := FormatDateTime('yyyy年mm月dd日hh时nn分ss秒',now()); end;。
Delphi获得与设置系统时间格式
LPCTSTR lpLCData // pointer to information to set
);
两个函数的参数很类似,其中 Locale可以取两个值:LOCALE_SYSTEM_DEFAULT,表示要操作的是系统默认的设置; LOCALE_USER_DEFAULT,表示要操作的是当前用户的设置。还可以取其他值,用于具体修改某种语言区域的设置。一般取 LOCALE_USER_DEFAULT。
另外 LOCALE_STIME 表示时间分隔符,LOCALE_SDATE 表示日期分隔符。可以单独使用,也可以在使用 LOCALE_SSHORTDATE 和 LOCALE_STIMEFORMAT 的同时一并修改,所以不需要单独操作。
使用GetLocaleInfo或SetLocaleInfo时,每次只能操作一个类型。比如要同时设置短日期格式、长日期格式、时间格式,就必须分别用三个类型代号调用三次 SetLocaleInfo。
GetLocaleInfo(LOCALE_USER_DEFAULT,LOCALE_STIMEFORMAT,buf,i); //取时间格式
GPrevTimeFormat:=string(buf);
FreeMem(buf);
end;
2.//设置时间格式
procedure SetDateTimeFormat();
需要用到的有两个Windows API,一个是 GetLocaleInfo,一个是 SetLocaleInfo。
查API说明:
int GetLocaleInfo(
LCID Locale, // locale identifier ,设置信息的范围,是系统级,还是当前用户
Delphi 日期时间函数讲解
各种时间类型之间的转换函数DateTimeToFileDate函数:定义:DateTimeToFileDate(DateTime: TDateTime): Integer;作用:将一个TDateTime类型的时间转化为Dos环境中的时间,Dos环境下对时间的访问方法和VCL中的TdateTime类型不一样,在进行文件操作时,为了保持时间的一致性,需要使用DateTimeToFileDate函数进行转化,返回的Integer的值就是Dos下的用于描述时间的值。
DateTimeToSystemTime 过程:定义:procedure DateTimeToSystemTime(DateTime: TDateTime; var SystemTime: TSystemTime);作用:将一个TDateTime类型的时间转换为Win API函数所使用的TSystemTime类型,在使用WinApi函数操纵时间时用到。
SystemTimeToDateTime 函数:定义:function SystemTimeToDateTime(const SystemTime: TSystemTime): TDateTime;作用:将一个在WinApi函数中得到的TSysTemTime类型的数转换为TDateTime类型。
DateTimeToTimeStamp 函数:TimeStampToDateTime 函数:定义:DateTimeToTimeStamp(DateTime: TDateTime): TTimeStamp;function TimeStampToDateTime(const TimeStamp: TTimeStamp): TDateTime;作用:用于在TDataTime类型与TTimeStamp之间进行互相转换。
TDataTime 用一个double描绘一个时间,而TTimeStamp则是采用两个整形数分别描述时间。
【delphi】获取两个时间之间的时长间隔字符串
function Get_IntervalTime(T1,T2 : TDateTime) : string;
const
sFmt = '%d 天 %d 小时 %d 分钟 %d 秒 %d 毫秒';
// sFmt = '%d Days %d Hours %d Minutes %d Seconds';
Days := Hours div HoursPerDay;
Hours := Hours mod HoursPerDay;
Result := Format(sFmt, [Days, Hours, Minutes, Seconds, miSeconds]);
end;
miSeconds := miSeconds mod 1000;
Hours := ASeconds div SecsPerHour; // 总的小时数
Minutes := (ASeconds - Hours * SecsPerHour) div 60; // 总的分钟数
Seconds := ASeconds mod 60;
HoursPerDay = 24;
var
Days, Hours, Minutes, Seconds, miSeconds: Cardinal;
ASeconds: Cardinal;
begin
ASeconds := SecondsBetween(T1, T2);
miSeconds := MilliSecondsBetween(T1, T2);
有时我们需要知道程序或者服务运行的时长比如程序从启动到关闭总共运行了10天3小时23分18秒429毫秒
【delphi】获取两个时间之间的时长间隔字符串
Delphi实现读取系统时间与日期完整实例
Delphi实现读取系统时间与⽇期完整实例本⽂讲述了Delphi读取系统时间与⽇期的实现⽅法,⾸先设置各个控件⽤于显⽰时间、读取时间与设置时间。
再添加如下代码:unit Unit1;interfaceusesWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,StdCtrls;typeTForm1 = class(TForm)Button1: TButton;Memo1: TMemo;Button2: TButton;procedure Button1Click(Sender: TObject);procedure FormCreate(Sender: TObject);procedure Button2Click(Sender: TObject);private{ Private declarations }public{ Public declarations }end;varForm1: TForm1;implementation{$R *.DFM}uses ShellAPI;function SetSystemDateTime(Year, Month, Day, Hour, Minute, Second: word): integer; export;procedure SetDate(Year, Month, Day: Word); assembler;asmMOV CX,YearMOV DH,BYTE PTR MonthMOV DL,BYTE PTR DayMOV AH,2BHINT 21Hend;procedure SetTime(Hour, Minute, Second, Sec100: Word); assembler;asmMOV CH,BYTE PTR HourMOV CL,BYTE PTR MinuteMOV DH,BYTE PTR SecondMOV DL,BYTE PTR Sec100MOV AH,2DHINT 21Hend;beginSetDate(Year, Month, Day);SetTime(Hour, Minute + 1, Second, 0);result := 1;end;procedure TForm1.Button1Click(Sender: TObject);varst : TSYSTEMTIME;begin//得到系统时间GetSystemTime(st);//显⽰系统时间Memo1.Lines.Add('系统时间 = ' +IntToStr(st.wmonth) + '/' +IntToStr(st.wDay) + '/' +IntToStr(st.wYear) + ' ' +IntToStr(st.wHour) + ':' +IntToStr(st.wMinute) + ':' +IntToStr(st.wSecond));end;procedure TForm1.FormCreate(Sender: TObject);beginMemo1.Lines.Clear;end;procedure TForm1.Button2Click(Sender: TObject);varst: TSYSTEMTIME;beginDateTimeToSystemTime(StrToDatetime('2002-06-23 15:39:46' ),st); SetSystemTime(st);end;end.。
delphi 时间计算
一、TDateTime类型怎么进行加减运算?比如我要在当前的日期时间上再加30分钟,得到一个新的日期时间,应该怎么运算?答:TDateTime类型可直接进行运算(*前n秒的TDateTime是多少?前n分钟的TDateTime是多少?前n小时的TDateTime是多少?前n天的TDateTime是多少?前n周的TDateTime是多少?答案:now-n/3600/24now-n/60/24now-n/24now-n*1now-n*7 *)Memo1.Clear;Memo1.Lines.Add('当前时间:' + DatetimeToStr(Now));Memo1.Lines.Add('前20秒的TDateTime是多少?' +DatetimeToStr(Now-20/3600/24));Memo1.Lines.Add('前2分钟的TDateTime是多少?' + DatetimeToStr(Now-2/60/24));Memo1.Lines.Add('前2小时的TDateTime是多少?' + DatetimeToStr(Now-2/24));Memo1.Lines.Add('前2天的TDateTime是多少?' + DatetimeToStr(Now-2*1));Memo1.Lines.Add('前2周的TDateTime是多少?' + DatetimeToStr(Now-2*7));运行结果:当前时间:2011-12-9 下午03:39:06前20秒的TDateTime是多少?2011-12-9 下午03:38:46 前2分钟的TDateTime是多少?2011-12-9 下午03:37:06 前2小时的TDateTime是多少?2011-12-9 下午01:39:06 前2天的TDateTime是多少?2011-12-7 下午03:39:06 前2周的TDateTime是多少?2011-11-25 下午03:39:06二、有控件DateTimePicker1 ,假如DateTimePicker1 值为2004-7-5 ,请问:如何求出1.本月第一日( 即2004-7-1 ),2.本月最后一日( 即2004-7-31 ),3.上个月当日(即2004-6-5 ),4.上个月最后一日( 即2004-6-30 ),5.上年当月当日( 即2003-7-5 ).6.上年上月当日( 即2003-6-5 ).7.上年上月最后一日( 即2003-6-30 ).最头痛的问题是各个月的天数不同,还要考虑是否闰年的“二月份”!DataUtils.unit....你所有的都有。
Delphi的数据格式化
Delphi的数据格式化一、Format函数的用法Format是一个很常用,却又似乎很烦的方法,本人试图对这个方法的帮助进行一些翻译,让它有一个完整的概貌,以供大家查询之用:首先看它的声明:function Format(const Format: string; const Args: array of const): string; overload;事实上Format方法有两个种形式,另外一种是三个参数的,主要区别在于它是线程安全的,但并不多用,所以这里只对第一个介绍:function Format(const Format: string; const Args: array of const): string; overload;Format参数是一个格式字符串,用于格式化Args里面的值的。
Args又是什么呢,它是一个变体数组,即它里面可以有多个参数,而且每个参数可以不同。
如以下例子:Format('my name is %6s',['wind']);返回后就是my name is wind现在来看Format参数的详细情况:Format里面可以写普通的字符串,比如'my name is' 但有些格式指令字符具有特殊意义,比如"%6s"格式指令具有以下的形式:"%" [index ":"] ["-"] [width] ["." prec] type它是以"%"开始,而以type结束,type表示一个具体的类型。
中间是用来格式化type类型的指令字符,是可选的。
先来看看type,type可以是以下字符:d 十制数,表示一个整型值u 和d一样是整型值,但它是无符号的,而如果它对应的值是负的,则返回时是一个2的32次方减去这个绝对值的数如:Format('this is %u',[-2]);返回的是:this is 4294967294f 对应浮点数e 科学表示法,对应整型数和浮点数,比如Format('this is %e',[-2.22]);返回的是:this is -2.22000000000000E+000等一下再说明如果将数的精度缩小g 这个只能对应浮点型,且它会将值中多余的数去掉比如Format('this is %g',[02.200]);返回的是:this is 2.2n 只能对应浮点型,将值转化为号码的形式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
获得系统当前时间
本例中主要应用了FormatDateTime函数,此函数主要用于将日期时间格式化为指定的字符串。
利用该函数可以输出许多形式的时间格式。
程序运行结果如图6.1所示
主要代码如下:
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption := FormatDateTime('hh:nn:ss',Now());
end;
获得系统当前日期
当用户单击窗体中的按钮时,程序会利用DateTimeToStr函数将当前日期转换为一个字符串显示在标签上。
程序运行结果如图6.2所示。
图6.2 获得系统当前日期
主要代码如下:
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption := DateTimeToStr(Date());
end;
将日期时间格式化为指定格式
本例将日期时间格式化为指定格式主要是应用了FormatDateTime函数。
使用该函数可以将当前日期时间格式化为自定义格式。
程序运行结果如图6.3所示。
图6.3 将日期时间格式化为指定格式
主要代码如下:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Label1.Caption := DateTimeToStr(now());
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Label2.Caption := FormatDateTime('yyyy年mm月dd日hh时nn分ss秒',now()); end;。