TrySystemTimeToDateTime (Delphi)
From RAD Studio XE2 Code Examples
Description
This example uses the SysUtils function TrySystemTimeToDateTime and compares the output and behavior with the old SysUtils function SystemTimeToDateTime.
Code
procedure TForm1.Button1Click(Sender: TObject); var newLDateTime, LDateTime: TDateTime; LSystemTime: TSystemTime; LHour, LMin, LSec, LMSec: Word; LYear, LMonth, LDay, LDOW: Word; msgstr: String; ExceptionObj : TObject; begin // Construct valid date/time LSystemTime.wYear := StrToInt(Edit1.Text); LSystemTime.wMonth := StrToInt(Edit2.Text); LSystemTime.wDayOfWeek := StrToInt(Edit3.Text); LSystemTime.wDay := StrToInt(Edit4.Text); LSystemTime.wHour := StrToInt(Edit5.Text); LSystemTime.wMinute := StrToInt(Edit6.Text); LSystemTime.wSecond := StrToInt(Edit7.Text); LSystemTime.wMilliseconds := StrToInt(Edit8.Text); ExceptionObj := nil; if TrySystemTimeToDateTime(LSystemTime, LDateTime) then begin DecodeDateFully(LDateTime, LYear, LMonth, LDay, LDOW); DecodeTime(LDateTime, LHour, LMin, LSec, LMSec); if (LSystemTime.wYear = LYear) and (LSystemTime.wMonth = LMonth) and // Delphi's DayOfWeek is 1 more than Windows, must substract 1 from LDOW (LSystemTime.wDay = LDay) and (LSystemTime.wDayOfWeek = LDOW - 1) and (LSystemTime.wHour = LHour) and (LSystemTime.wMinute = LMin) and (LSystemTime.wSecond = LSec) and (LSystemTime.wMilliseconds = LMSec) then msgstr := 'This time encoded and decoded correctly through TrySystemTimeToDateTime.' else msgstr := 'This time encode and decode disagree through TrySystemTimeToDateTime.'; end else msgstr := 'This time did not encode correctly through TrySystemTimeToDateTime.'; try newLDateTime:= SystemTimeToDateTime(LSystemTime); except begin ExceptionObj := ExceptObject; MessageDlg(msgstr+sLineBreak+ExceptionObj.ToString+' for SystemTimeToDateTime.', mtError, [mbOK], 0); end; end; if ExceptionObj = nil then begin msgstr := msgstr+sLineBreak+'No exception for SystemTimeToDateTime'; if LDateTime = newLDateTime then msgstr := msgstr+sLineBreak+'TrySystemTimeToDateTime and SystemTimeToDateTime agree.' else msgstr := msgstr+sLineBreak+'TrySystemTimeToDateTime and SystemTimeToDateTime disagree.'; MessageDlg(msgstr, mtError, [mbOK], 0); end end;
Uses
- System.SysUtils.TrySystemTimeToDateTime ( fr | de | ja )
- System.SysUtils.SystemTimeToDateTime ( fr | de | ja )