Pascal 日期和时间

  • 日期和时间

    您编写的大多数软件都需要实现某种形式的日期函数,以返回当前日期和时间。日期是日常生活中的重要组成部分,因此无需思考就可以轻松地与他们合作。Pascal还提供了用于日期算术的强大工具,使操作日期变得容易。但是,对于不同的编译器,这些函数的实际名称和工作方式有所不同。
  • 获取当前日期和时间

    Pascal的TimeToString函数以冒号(:)分隔的形式为您提供当前时间。以下示例显示如何获取当前时间-
    
    program TimeDemo;
    uses sysutils;
    
    begin
       writeln ('Current time : ',TimeToStr(Time));
    end.
    
    尝试一下
    编译并执行上述代码后,将产生以下结果-
    
    Current time : 18:33:08
    
    Date函数返回当前的日期TDateTime类型格式。TDateTime是一个双精度值,需要一些解码和格式化。以下程序演示了如何在程序中使用它来显示当前日期-
    
    Program DateDemo;
    uses sysutils;
    var
       YY,MM,DD : Word;
    
    begin
       writeln ('Date : ',Date);
       DeCodeDate (Date,YY,MM,DD);
       writeln (format ('Today is (DD/MM/YY): %d/%d/%d ',[dd,mm,yy]));
    end.
    
    尝试一下
    编译并执行上述代码后,将产生以下结果-
    
    Date : 4.4081000000000000E+004
    Today is (DD/MM/YY): 7/9/2020 
    
    Now函数返回当前日期和时间-
    
    Program DatenTimeDemo;
    uses sysutils;
    begin
       writeln ('Date and Time at the time of writing : ',DateTimeToStr(Now));
    end.
    
    尝试一下
    编译并执行上述代码后,将产生以下结果-
    
    Date and Time at the time of writing : 7-9-20 05:55:33
    
    Free Pascal提供了一个简单的时间戳结构TTimeStamp,其格式如下-
    
    type TTimeStamp = record
       Time: Integer;
       Date: Integer;
    end;
    
  • 各种日期和时间函数

    Free Pascal提供以下日期和时间函数-
    函数/过程 说明
    function DateTimeToFileDate(DateTime: TDateTime):LongInt; 将DateTime类型转换为文件日期。
    function DateTimeToStr( DateTime: TDateTime):; 构造DateTime的字符串表示形式
    function DateTimeToStr(DateTime: TDateTime; const FormatSettings: TFormatSettings):; 构造DateTime的字符串表示形式
    procedure DateTimeToString(out Result: ;const FormatStr: ;const DateTime: TDateTime); 构造DateTime的字符串表示形式
    procedure DateTimeToString(out Result: ; const FormatStr: ; const DateTime: TDateTime; const FormatSettings: TFormatSettings); 构造DateTime的字符串表示形式
    procedure DateTimeToSystemTime(DateTime: TDateTime; out SystemTime: TSystemTime); 将DateTime转换为系统时间
    function DateTimeToTimeStamp( DateTime: TDateTime):TTimeStamp; 将DateTime转换为时间戳
    function DateToStr(Date: TDateTime):; 构造日期的字符串表示形式
    function DateToStr(Date: TDateTime; const FormatSettings: TFormatSettings):; 构造日期的字符串表示形式
    function Date: TDateTime; 获取当前日期
    function DayOfWeek(DateTime: TDateTime):Integer; 获取星期几
    procedure DecodeDate(Date: TDateTime; out Year: Word; out Month: Word; out Day: Word); 将DateTime解码为年月日
    procedure DecodeTime(Time: TDateTime; out Hour: Word; out Minute: Word; out Second: Word; out MilliSecond: Word); 将DateTime解码为小时,分钟和秒
    function EncodeDate(Year: Word; Month: Word; Day: Word):TDateTime; 将年,日和月编码为DateTime
    function EncodeTime(Hour: Word; Minute: Word; Second: Word; MilliSecond: Word):TDateTime; 将小时,分钟和秒编码为DateTime
    function FormatDateTime(const FormatStr: ; DateTime: TDateTime):; 返回DateTime的字符串表示形式
    function FormatDateTime(const FormatStr: ; DateTime: TDateTime; const FormatSettings: TFormatSettings):; 返回DateTime的字符串表示形式
    function IncMonth(const DateTime: TDateTime; NumberOfMonths: Integer = 1):TDateTime; 每月加1
    function IsLeapYear(Year: Word):Boolean; 确定年份是否为leap年
    function MSecsToTimeStamp(MSecs: Comp):TTimeStamp; 将毫秒数转换为时间戳
    function Now: TDateTime; 获取当前日期和时间
    function StrToDateTime(const S:):TDateTime; 将字符串转换为DateTime
    function StrToDateTime(const s: ShortString; const FormatSettings: TFormatSettings):TDateTime; 将字符串转换为DateTime
    function StrToDateTime(const s: AnsiString; const FormatSettings: TFormatSettings):TDateTime; 将字符串转换为DateTime
    function StrToDate(const S: ShortString):TDateTime; 将字符串转换为日期
    function StrToDate(const S: Ansistring):TDateTime; 将字符串转换为日期
    function StrToDate(const S: ShortString; separator: Char):TDateTime; 将字符串转换为日期
    function StrToDate(const S: AnsiString; separator: Char):TDateTime; 将字符串转换为日期
    function StrToDate(const S: ShortString; const useformat: ; separator: Char):TDateTime; 将字符串转换为日期
    function StrToDate(const S: AnsiString; const useformat: ; separator: Char):TDateTime; 将字符串转换为日期
    function StrToDate(const S: PChar; Len: Integer; const useformat: ; separator: Char = #0):TDateTime; 将字符串转换为日期
    function StrToTime(const S: Shortstring):TDateTime; 将字符串转换为时间
    function StrToTime(const S: Ansistring):TDateTime; 将字符串转换为时间
    function StrToTime(const S: ShortString; separator: Char):TDateTime; 将字符串转换为时间
    function StrToTime(const S: AnsiString; separator: Char):TDateTime; 将字符串转换为时间
    function StrToTime(const S: ; FormatSettings: TFormatSettings):TDateTime; 将字符串转换为时间
    function StrToTime(const S: PChar; Len: Integer; separator: Char = #0):TDateTime; 将字符串转换为时间
    function SystemTimeToDateTime(const SystemTime: TSystemTime):TDateTime; 将系统时间转换为日期时间
    function TimeStampToDateTime(const TimeStamp: TTimeStamp):TDateTime; 将时间戳转换为DateTime
    function TimeStampToMSecs(const TimeStamp: TTimeStamp):comp; 将时间戳转换为毫秒数
    function TimeToStr(Time: TDateTime):; 返回时间的字符串表示形式
    function TimeToStr(Time: TDateTime; const FormatSettings: TFormatSettings):; 返回时间的字符串表示形式
    function Time: TDateTime; 获取当前时间
    以下示例说明了上述某些函数的用法-
    
    Program DatenTimeDemo;
    uses sysutils;
    var
    year, month, day, hr, min, sec, ms: Word;
    
    begin
       writeln ('Date and Time at the time of writing : ',DateTimeToStr(Now));
       writeln('Today is ',LongDayNames[DayOfWeek(Date)]);
       writeln;
       writeln('Details of Date: ');
       
       DecodeDate(Date,year,month,day);
       writeln (Format ('Day: %d',[day]));
       writeln (Format ('Month: %d',[month]));
       writeln (Format ('Year: %d',[year]));
       writeln;
       writeln('Details of Time: ');
       
       DecodeTime(Time,hr, min, sec, ms);
       writeln (format('Hour: %d:',[hr]));
       writeln (format('Minutes: %d:',[min]));
       writeln (format('Seconds: %d:',[sec]));
       writeln (format('Milliseconds: %d:',[hr]));
    end.
    
    尝试一下
    编译并执行上述代码后,将产生以下结果:
    
    Date and Time at the time of writing : 7-9-20 06:04:12
    Today is Monday
    
    Details of Date: 
    Day: 7
    Month: 9
    Year: 2020
    
    Details of Time: 
    Hour: 6:
    Minutes: 4:
    Seconds: 12:
    Milliseconds: 6: