Pascal - Data e ora

La maggior parte dei software che scrivi richiedono l'implementazione di una qualche forma di funzioni di data che restituiscano la data e l'ora correnti. Le date fanno così tanto parte della vita quotidiana che diventa facile lavorarci senza pensarci. Pascal fornisce anche potenti strumenti per l'aritmetica delle date che facilitano la manipolazione delle date. Tuttavia, il nome e il funzionamento effettivi di queste funzioni sono diversi per i diversi compilatori.

Ottenere la data e l'ora correnti

La funzione TimeToString di Pascal ti dà l'ora corrente in una forma delimitata da due punti (:). L'esempio seguente mostra come ottenere l'ora corrente:

program TimeDemo;
uses sysutils;

begin
   writeln ('Current time : ',TimeToStr(Time));
end.

Quando il codice precedente è stato compilato ed eseguito, produce il seguente risultato:

Current time : 18:33:08

Il Date la funzione restituisce la data corrente in TDateTimeformato. Il TDateTime è un valore doppio, che necessita di decodifica e formattazione. Il seguente programma mostra come usarlo nel tuo programma per visualizzare la data corrente:

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.

Quando il codice precedente è stato compilato ed eseguito, produce il seguente risultato:

Date: 4.111300000000000E+004
Today is (DD/MM/YY):23/7/2012

La funzione Now restituisce la data e l'ora correnti -

Program DatenTimeDemo;
uses sysutils;
begin
   writeln ('Date and Time at the time of writing : ',DateTimeToStr(Now));
end.

Quando il codice precedente è stato compilato ed eseguito, produce il seguente risultato:

Date and Time at the time of writing : 23/7/2012 18:51:

Free Pascal fornisce una semplice struttura di timestamp denominata TTimeStamp, che ha il seguente formato:

type TTimeStamp = record
   Time: Integer;
   Date: Integer;
end;

Varie funzioni di data e ora

Free Pascal fornisce le seguenti funzioni di data e ora:

Sr.No. Nome e descrizione della funzione
1

function DateTimeToFileDate(DateTime: TDateTime):LongInt;

Converte il tipo DateTime in data file.

2

function DateTimeToStr( DateTime: TDateTime):;

Costruisce la rappresentazione di stringa di DateTime

3

function DateTimeToStr(DateTime: TDateTime; const FormatSettings: TFormatSettings):;

Costruisce la rappresentazione di stringa di DateTime

4

procedure DateTimeToString(out Result: ;const FormatStr: ;const DateTime: TDateTime);

Costruisce la rappresentazione di stringa di DateTime

5

procedure DateTimeToString(out Result: ; const FormatStr: ; const DateTime: TDateTime; const FormatSettings: TFormatSettings);

Costruisce la rappresentazione di stringa di DateTime

6

procedure DateTimeToSystemTime(DateTime: TDateTime; out SystemTime: TSystemTime);

Converte DateTime nell'ora di sistema

7

function DateTimeToTimeStamp( DateTime: TDateTime):TTimeStamp;Converte DateTime in timestamp

8

function DateToStr(Date: TDateTime):;

Costruisce la rappresentazione di stringa della data

9

function DateToStr(Date: TDateTime; const FormatSettings: TFormatSettings):;

Costruisce la rappresentazione di stringa della data

10

function Date: TDateTime;

Ottiene la data corrente

11

function DayOfWeek(DateTime: TDateTime):Integer;

Ottiene il giorno della settimana

12

procedure DecodeDate(Date: TDateTime; out Year: Word; out Month: Word; out Day: Word);

Decodifica DateTime in mese e giorno dell'anno

13

procedure DecodeTime(Time: TDateTime; out Hour: Word; out Minute: Word; out Second: Word; out MilliSecond: Word);

Decodifica DateTime in ore, minuti e secondi

14

function EncodeDate(Year: Word; Month: Word; Day: Word):TDateTime;

Codifica anno, giorno e mese in DateTime

15

function EncodeTime(Hour: Word; Minute: Word; Second: Word; MilliSecond: Word):TDateTime;

Codifica ore, minuti e secondi in DateTime

16

function FormatDateTime(const FormatStr: ; DateTime: TDateTime):;

Restituisce la rappresentazione in formato stringa di DateTime

17

function FormatDateTime(const FormatStr: ; DateTime: TDateTime; const FormatSettings: TFormatSettings):;

Restituisce la rappresentazione in formato stringa di DateTime

18

function IncMonth(const DateTime: TDateTime; NumberOfMonths: Integer = 1):TDateTime;

Aggiunge 1 al mese

19

function IsLeapYear(Year: Word):Boolean;

Determina se l'anno è bisestile

20

function MSecsToTimeStamp(MSecs: Comp):TTimeStamp;

Converte il numero di millisecondi in timestamp

21

function Now: TDateTime;

Ottiene la data e l'ora correnti

22

function StrToDateTime(const S:):TDateTime;

Converte la stringa in DateTime

23

function StrToDateTime(const s: ShortString; const FormatSettings: TFormatSettings):TDateTime;

Converte la stringa in DateTime

24

function StrToDateTime(const s: AnsiString; const FormatSettings: TFormatSettings):TDateTime;

Converte la stringa in DateTime

25

function StrToDate(const S: ShortString):TDateTime;

Converte la stringa in data

26

function StrToDate(const S: Ansistring):TDateTime;

Converte la stringa in data

27

function StrToDate(const S: ShortString; separator: Char):TDateTime;

Converte la stringa in data

28

function StrToDate(const S: AnsiString; separator: Char):TDateTime;

Converte la stringa in data

29

function StrToDate(const S: ShortString; const useformat: ; separator: Char):TDateTime;

Converte la stringa in data

30

function StrToDate(const S: AnsiString; const useformat: ; separator: Char):TDateTime;

Converte la stringa in data

31

function StrToDate(const S: PChar; Len: Integer; const useformat: ; separator: Char = #0):TDateTime;

Converte la stringa in data

32

function StrToTime(const S: Shortstring):TDateTime;

Converte la stringa in tempo

33

function StrToTime(const S: Ansistring):TDateTime;

Converte la stringa in tempo

34

function StrToTime(const S: ShortString; separator: Char):TDateTime;

Converte la stringa in tempo

35

function StrToTime(const S: AnsiString; separator: Char):TDateTime;

Converte la stringa in tempo

36

function StrToTime(const S: ; FormatSettings: TFormatSettings):TDateTime;

Converte la stringa in tempo

37

function StrToTime(const S: PChar; Len: Integer; separator: Char = #0):TDateTime;

Converte la stringa in tempo

38

function SystemTimeToDateTime(const SystemTime: TSystemTime):TDateTime;

Converte l'ora di sistema in datetime

39

function TimeStampToDateTime(const TimeStamp: TTimeStamp):TDateTime;

Converte il timestamp in DateTime

40

function TimeStampToMSecs(const TimeStamp: TTimeStamp):comp;

Converte Timestamp in numero di millisecondi

41

function TimeToStr(Time: TDateTime):;

Restituisce la rappresentazione in formato stringa di Time

42

function TimeToStr(Time: TDateTime; const FormatSettings: TFormatSettings):;

Restituisce la rappresentazione in formato stringa di Time

43

function Time: TDateTime;

Ottieni l'ora corrente

Il seguente esempio illustra l'uso di alcune delle funzioni di cui sopra:

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.

Quando il codice precedente è stato compilato ed eseguito, ha prodotto il seguente risultato:

Date and Time at the time of writing : 7/24/2012 8:26:
Today is Tuesday
Details of Date:
Day:24
Month:7
Year: 2012
Details of Time:
Hour: 8
Minutes: 26
Seconds: 21
Milliseconds: 8