zoukankan      html  css  js  c++  java
  • Delphi 日期时间函数

    DateUtils.IncYear();
    DateUtils.IncMonth();
    DateUtils.IncWeek();
    DateUtils.IncDay();
    DateUtils.IncHour();
    DateUtils.IncMinute();
    DateUtils.IncSecond();
    DateUtils.IncMilliSecond();


    unit Unit1;

    interface

    uses
     Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
     Dialogs, StdCtrls;

    type
     TForm1 = class(TForm)
      procedure FormCreate(Sender: TObject);
     end;

    var
     Form1: TForm1;

    implementation

    {$R *.dfm}

    uses DateUtils;

    procedure TForm1.FormCreate(Sender: TObject);
    var
     t1,t2: TDateTime;
     i: Int64;
     d: Double;
    begin
     t1 := StrToDateTime('2011-1-1 1:1:1');

     t2 := IncYear(t1);
     ShowMessage(DateTimeToStr(t2)); //2012-1-1 1:01:01

     t2 := IncYear(t1, 3);
     ShowMessage(DateTimeToStr(t2)); //2014-1-1 1:01:01

     t2 := IncMonth(t1);
     ShowMessage(DateTimeToStr(t2)); //2011-2-1 1:01:01

     t2 := IncWeek(t1);
     ShowMessage(DateTimeToStr(t2)); //2011-1-8 1:01:01

     t2 := IncDay(t1);
     ShowMessage(DateTimeToStr(t2)); //2011-1-2 1:01:01

     t2 := IncHour(t1);
     ShowMessage(DateTimeToStr(t2)); //2011-1-1 2:01:01

     t2 := IncMinute(t1);
     ShowMessage(DateTimeToStr(t2)); //2011-1-1 1:02:01

     t2 := IncSecond(t1);
     ShowMessage(DateTimeToStr(t2)); //2011-1-1 1:01:02

     t2 := IncMilliSecond(t1);
     ShowMessage(FormatDateTime('yyyy-m-d h:n:s:zzz', t2)); //2011-1-1 1:01:01:001
    end;

    end.





    StartOfAYear ... StartOfTheYear ... EndOfAYear ... EndOfTheYear ... 每年、月、周、日的开始与结束的时间。

    {参数是指定的年、月、周、日}
    DateUtils.StartOfAYear 
    DateUtils.StartOfAMonth
    DateUtils.StartOfAWeek 
    DateUtils.StartOfADay

    {参数是 TDateTime}
    DateUtils.StartOfTheYear 
    DateUtils.StartOfTheMonth
    DateUtils.StartOfTheWeek 
    DateUtils.StartOfTheDay

    {参数是指定的年、月、周、日}
    DateUtils.EndOfAYear 
    DateUtils.EndOfAMonth
    DateUtils.EndOfAWeek 
    DateUtils.EndOfADay

    {参数是 TDateTime}
    DateUtils.EndOfTheYear
    DateUtils.EndOfTheMonth
    DateUtils.EndOfTheWeek
    DateUtils.EndOfTheDay


    unit Unit1;

    interface

    uses
     Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
     Dialogs, StdCtrls;

    type
     TForm1 = class(TForm)
      procedure FormCreate(Sender: TObject);
     end;

    var
     Form1: TForm1;

    implementation

    {$R *.dfm}

    uses DateUtils;

    procedure TForm1.FormCreate(Sender: TObject);
    var
     dt,t1,t2,t3,t4: TDateTime;
     s1,s2,s3,s4: string;
    begin
     dt := StrToDateTime('2009-5-20 11:22:33');

     t1 := StartOfAYear(2009);
     t2 := StartOfTheYear(dt);
     t3 := EndOfAYear(2009);
     t4 := EndOfTheYear(dt);

     s1 := FormatDateTime('yyyy-m-d h:n:s:zzz', t1); //2009-1-1 0:0:0:000
     s2 := FormatDateTime('yyyy-m-d h:n:s:zzz', t2); //2009-1-1 0:0:0:000
     s3 := FormatDateTime('yyyy-m-d h:n:s:zzz', t3); //2009-12-31 23:59:59:999
     s4 := FormatDateTime('yyyy-m-d h:n:s:zzz', t4); //2009-12-31 23:59:59:999

     t1 := StartOfAMonth(2009, 5); { 2009 年 5 月 }
     t2 := StartOfTheMonth(dt);
     t3 := EndOfAMonth(2009, 5);
     t4 := EndOfTheMonth(dt);

     s1 := FormatDateTime('yyyy-m-d h:n:s:zzz', t1); //2009-5-1 0:0:0:000
     s2 := FormatDateTime('yyyy-m-d h:n:s:zzz', t2); //2009-5-1 0:0:0:000
     s3 := FormatDateTime('yyyy-m-d h:n:s:zzz', t3); //2009-5-31 23:59:59:999
     s4 := FormatDateTime('yyyy-m-d h:n:s:zzz', t4); //2009-5-31 23:59:59:999


     t1 := StartOfAWeek(2009, 21); { 2009 年第 21 周 }
     t2 := StartOfTheWeek(dt);
     t3 := EndOfAWeek(2009, 21);
     t4 := EndOfTheWeek(dt);

     s1 := FormatDateTime('yyyy-m-d h:n:s:zzz', t1); //2009-5-18 0:0:0:000
     s2 := FormatDateTime('yyyy-m-d h:n:s:zzz', t2); //2009-5-18 0:0:0:000
     s3 := FormatDateTime('yyyy-m-d h:n:s:zzz', t3); //2009-5-24 23:59:59:999
     s4 := FormatDateTime('yyyy-m-d h:n:s:zzz', t4); //2009-5-24 23:59:59:999

     t1 := StartOfADay(2009, 140); { 2009 年第 140 天 }
     t2 := StartOfTheDay(dt);
     t3 := EndOfADay(2009, 140);
     t4 := EndOfTheDay(dt);

     s1 := FormatDateTime('yyyy-m-d h:n:s:zzz', t1); //2009-5-20 0:0:0:000
     s2 := FormatDateTime('yyyy-m-d h:n:s:zzz', t2); //2009-5-20 0:0:0:000
     s3 := FormatDateTime('yyyy-m-d h:n:s:zzz', t3); //2009-5-20 23:59:59:999
     s4 := FormatDateTime('yyyy-m-d h:n:s:zzz', t4); //2009-5-20 23:59:59:999
    end;

    end.





    WeeksInAYear、WeeksInYear、DaysInAYear、DaysInAMonth、DaysInYear、DaysInMonth - 获取指定年月的周、日数。



    DateUtils.DaysInYear();
    DateUtils.DaysInMonth();
    DateUtils.DaysInAYear();
    DateUtils.DaysInAMonth();
    DateUtils.WeeksInYear();
    DateUtils.WeeksInAYear();


    unit Unit1;

    interface

    uses
     Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
     Dialogs, StdCtrls;

    type
     TForm1 = class(TForm)
      procedure FormCreate(Sender: TObject);
     end;

    var
     Form1: TForm1;

    implementation

    {$R *.dfm}

    uses DateUtils;

    procedure TForm1.FormCreate(Sender: TObject);
    var
     dt: TDateTime;
     w: Word;
    begin
     dt := StrToDateTime('2009-5-20 11:22:33');

     {指定日期所在年的总天数}
     w := DaysInYear(dt);    //365

     {指定日期所在月的总天数}
     w := DaysInMonth(dt);    //31

     {指定年的总天数}
     w := DaysInAYear(2009);   //365

     {指定年、指定月的总天数}
     w := DaysInAMonth(2009, 5); //31

     {指定日期所在年的总周数}
     w := WeeksInYear(dt);    //53

     {指定年的总周数}
     w := WeeksInAYear(2009);  //53
    end;

    end.








    WithinPastYears、WithinPastMonths、WithinPastWeeks、WithinPastDays ... 判断两个时间差是否在一个指定范围内。



    DateUtils.WithinPastYears();
    DateUtils.WithinPastMonths();
    DateUtils.WithinPastWeeks();
    DateUtils.WithinPastDays();
    DateUtils.WithinPastHours();
    DateUtils.WithinPastMinutes();
    DateUtils.WithinPastSeconds();
    DateUtils.WithinPastMilliSeconds(); 


    unit Unit1;

    interface

    uses
     Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
     Dialogs, StdCtrls;

    type
     TForm1 = class(TForm)
      procedure FormCreate(Sender: TObject);
     end;

    var
     Form1: TForm1;

    implementation

    {$R *.dfm}

    uses DateUtils;

    procedure TForm1.FormCreate(Sender: TObject);
    var
     t1,t2: TDateTime;
     b: Boolean;
    begin
     t1 := StrToDateTime('2009-5-20 11:22:33');
     t2 := StrToDateTime('2009-5-21 11:22:33');

     {两个时间差是否在 24 年内}
     b := WithinPastYears(t1, t2, 24); //True

     {两个时间差是否在 24 个月内}
     b := WithinPastMonths(t1, t2, 24); //True

     {两个时间差是否在 24 个周内}
     b := WithinPastWeeks(t1, t2, 24); //True

     {两个时间差是否在 24 天内}
     b := WithinPastDays(t1, t2, 24);  //True

     {两个时间差是否在 24 个小时内}
     b := WithinPastHours(t1, t2, 24); //True

     {两个时间差是否在 24 分钟内}
     b := WithinPastMinutes(t1, t2, 24);   //False

     {两个时间差是否在 24 秒内}
     b := WithinPastSeconds(t1, t2, 24);   //False

     {两个时间差是否在 24 毫秒内}
     b := WithinPastMilliSeconds(t1, t2, 24); //False

    // ShowMessage(BoolToStr(b, True));
    end;

    end.








    RecodeDateTime、RecodeDate、RecodeTime、RecodeYear ... 修改时间。





    DateUtils.RecodeDateTime();
    DateUtils.RecodeDate();
    DateUtils.RecodeTime();
    DateUtils.RecodeYear();
    DateUtils.RecodeMonth();
    DateUtils.RecodeDay();
    DateUtils.RecodeHour();
    DateUtils.RecodeMinute();
    DateUtils.RecodeSecond();
    DateUtils.RecodeMilliSecond();
    DateUtils.TryRecodeDateTime();


    unit Unit1;

    interface

    uses
     Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
     Dialogs, StdCtrls;

    type
     TForm1 = class(TForm)
      procedure FormCreate(Sender: TObject);
     end;

    var
     Form1: TForm1;

    implementation

    {$R *.dfm}

    uses DateUtils;

    procedure TForm1.FormCreate(Sender: TObject);
    const
     st = 'yyyy-m-d h:n:s:z';
    var
     t1, t2: TDateTime;
    begin
     t1 := EncodeDateTime(2001, 1, 1, 1, 1, 1, 1);

     t2 := RecodeDateTime(t1, 2009, 5, 21, 11, 22, 33, 999);
     ShowMessage(FormatDateTime(st, t2));  //2009-5-21 11:22:33:999

     t2 := RecodeDate(t1, 2009, 5, 21);
     ShowMessage(FormatDateTime(st, t2));  //2009-5-21 1:1:1:1

     t2 := RecodeTime(t1, 11, 22, 33, 999);
     ShowMessage(FormatDateTime(st, t2));  //2009-1-1 11:22:33:999

     t2 := RecodeYear(t1, 2009);
     ShowMessage(FormatDateTime(st, t2));  //2009-1-1 1:1:1:1

     t2 := RecodeMonth(t1, 5);
     ShowMessage(FormatDateTime(st, t2));  //2001-5-1 1:1:1:1

     t2 := RecodeDay(t1, 21);
     ShowMessage(FormatDateTime(st, t2));  //2001-1-21 1:1:1:1

     t2 := RecodeHour(t1, 11);
     ShowMessage(FormatDateTime(st, t2));  //2001-1-1 11:1:1:1

     t2 := RecodeMinute(t1, 22);
     ShowMessage(FormatDateTime(st, t2));  //2001-1-1 1:22:1:1

     t2 := RecodeSecond(t1, 33);
     ShowMessage(FormatDateTime(st, t2));  //2001-1-1 1:1:33:1

     t2 := RecodeMilliSecond(t1, 999);
     ShowMessage(FormatDateTime(st, t2));  //2001-1-1 1:1:1:999

     if TryRecodeDateTime(t1, 2009, 5, 21, 11, 22, 33, 999, t2) then
      ShowMessage(FormatDateTime(st, t2));  //2009-5-21 11:22:33:999
    end;

    end.





    IsValidDateTime、IsValidDate、IsValidTime、IsValidDateDay ... 判断时间是否合法。



    DateUtils.IsValidDateTime
    DateUtils.IsValidDate
    DateUtils.IsValidTime
    DateUtils.IsValidDateDay
    DateUtils.IsValidDateWeek
    DateUtils.IsValidDateMonthWeek

    //可用下面几个过程抛出异常:
    DateUtils.InvalidDateDayError
    DateUtils.InvalidDateMonthWeekError
    DateUtils.InvalidDateTimeError
    DateUtils.InvalidDateWeekError
    DateUtils.InvalidDayOfWeekInMonthError


    unit Unit1;

    interface

    uses
     Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
     Dialogs, StdCtrls;

    type
     TForm1 = class(TForm)
      procedure FormCreate(Sender: TObject);
     end;

    var
     Form1: TForm1;

    implementation

    {$R *.dfm}

    uses DateUtils;

    procedure TForm1.FormCreate(Sender: TObject);
    var
     b: Boolean;
    begin
     b := IsValidDateTime(2009, 5, 21, 11, 22, 33, 999); //True
     b := IsValidDateTime(2009, 5, 21, 11, 22, 33, 9999); //False

     b := IsValidDate(2009, 5, 21); //True
     b := IsValidDate(2009, 5, 32); //False

     b := IsValidTime(11, 22, 33, 0); //True
     b := IsValidTime(11, 22, 61, 0); //False

     b := IsValidDateDay(2009, 141); //True
     b := IsValidDateDay(2009, 366); //False

     b := IsValidDateWeek(2009, 21, 7); //True
     b := IsValidDateWeek(2009, 21, 8); //False

     b := IsValidDateMonthWeek(2009, 5, 3, 7); //True
     b := IsValidDateMonthWeek(2009, 5, 3, 8); //False

    // ShowMessage(BoolToStr(b, True));
    end;

    end.







    IsSameDay、IsToday - 判断是不是同一天、判断是不是今天。





    unit Unit1;

    interface

    uses
     Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
     Dialogs, StdCtrls;

    type
     TForm1 = class(TForm)
      procedure FormCreate(Sender: TObject);
     end;

    var
     Form1: TForm1;

    implementation

    {$R *.dfm}

    uses DateUtils;

    procedure TForm1.FormCreate(Sender: TObject);
    var
     t1,t2,t3,t4: TDateTime;
     b: Boolean;
    begin
     t1 := StrToDateTime('2009-1-21');
     t2 := StrToDateTime('2009-1-21');
     t3 := StrToDateTime('2009-5-21');
     t4 := Now;

     {判断是不是同一天}
     b := IsSameDay(t1, t2); //True
     b := IsSameDay(t1, t3); //False

     {判断给定时间和当前时间是不是同一天}
     b := IsToday(t1); //False
     b := IsToDay(t4); //True

    // ShowMessage(BoolToStr(b, True));
    end;

    end.


    Yesterday、Today、Tomorrow - 昨天、今天、明天。


    unit Unit1;

    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;

    type
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
      end;

    var
      Form1: TForm1;

    implementation

    {$R *.dfm}

    uses DateUtils;

    procedure TForm1.FormCreate(Sender: TObject);
    var
      t1,t2,t3: TDateTime;
    begin
      t1 := Yesterday;
      t2 := Today;     //同 SysUtils.Date;
      t3 := Tomorrow;


      ShowMessageFmt('%s, %s, %s', [DateToStr(t1), DateToStr(t2), DateToStr(t3)]);
      {2009-5-20, 2009-5-21, 2009-5-22}
    end;

    end. 

  • 相关阅读:
    排序算法系列之冒泡排序 (3)
    排序算法系列之选择排序 (2)
    排序算法系列之插入排序 (1)
    深挖 NGUI 基础 之UICamera (二)
    深挖 NGUI 基础 之UIRoot (一)
    JPS寻路和AStar寻路
    旋转矩阵
    [斜边的血条进度]
    UI框架:ui节点控件的绑定方式
    Shader播放序列帧
  • 原文地址:https://www.cnblogs.com/bestlove/p/7057572.html
Copyright © 2011-2022 走看看