Browse Source

UTime use System.DateUtils on Delphi

Also disable AnsiString
PascalCoin 6 years ago
parent
commit
2d5030e10d
1 changed files with 9 additions and 30 deletions
  1. 9 30
      src/core/UTime.pas

+ 9 - 30
src/core/UTime.pas

@@ -24,41 +24,33 @@ interface
 
 Uses
 {$IFnDEF FPC}
-  Windows,
+  System.DateUtils,
 {$ELSE}
   {LCLIntf, LCLType, LMessages,}
 {$ENDIF}
   SysUtils;
 
-{$IFnDEF FPC}
-function TzSpecificLocalTimeToSystemTime(lpTimeZoneInformation: PTimeZoneInformation; var lpLocalTime, lpUniversalTime: TSystemTime): BOOL; stdcall;
-function SystemTimeToTzSpecificLocalTime(lpTimeZoneInformation: PTimeZoneInformation; var lpUniversalTime,lpLocalTime: TSystemTime): BOOL; stdcall;
-{$ENDIF}
-
 Function DateTime2UnivDateTime(d:TDateTime):TDateTime;
 Function UnivDateTime2LocalDateTime(d:TDateTime):TDateTime;
 
 function UnivDateTimeToUnix(dtDate: TDateTime): Longint;
 function UnixToUnivDateTime(USec: Longint): TDateTime;
 
-function UnixTimeToLocalElapsedTime(USec : Longint) : AnsiString;
-Function DateTimeElapsedTime(dtDate : TDateTime) : AnsiString;
+function UnixTimeToLocalElapsedTime(USec : Longint) : String;
+Function DateTimeElapsedTime(dtDate : TDateTime) : String;
 
-Function UnixTimeToLocalStr(UnixTime : Longint) : AnsiString;
+Function UnixTimeToLocalStr(UnixTime : Longint) : String;
 
 implementation
 
 {$IFDEF FPC}
 Uses DateUtils;
-{$ELSE}
-function TzSpecificLocalTimeToSystemTime; external 'kernel32.dll' name 'TzSpecificLocalTimeToSystemTime';
-function SystemTimeToTzSpecificLocalTime; external kernel32 name 'SystemTimeToTzSpecificLocalTime';
 {$ENDIF}
 
 const
     UnixStartDate: TDateTime = 25569.0; // 01/01/1970
 
-function UnixTimeToLocalElapsedTime(USec : Longint) : AnsiString;
+function UnixTimeToLocalElapsedTime(USec : Longint) : String;
 Var diff, positivediff : Longint;
 Begin
   diff := UnivDateTimeToUnix(DateTime2UnivDateTime(now)) - Usec;
@@ -72,7 +64,7 @@ Begin
   else Result := inttostr(diff DIV (60*60*24))+' days ago';
 End;
 
-Function DateTimeElapsedTime(dtDate : TDateTime) : AnsiString;
+Function DateTimeElapsedTime(dtDate : TDateTime) : String;
 Begin
   Result := UnixTimeToLocalElapsedTime( UnivDateTimeToUnix(DateTime2UnivDateTime(dtDate)) );
 End;
@@ -83,14 +75,8 @@ begin
   Result := LocalTimeToUniversal(d,-GetLocalTimeOffset);
 end;
 {$ELSE}
-var
- TZI:TTimeZoneInformation;
- LocalTime, UniversalTime:TSystemTime;
 begin
-  GetTimeZoneInformation(tzi);
-  DateTimeToSystemTime(d,LocalTime);
-  TzSpecificLocalTimeToSystemTime(@tzi,LocalTime,UniversalTime);
-  Result := SystemTimeToDateTime(UniversalTime);
+  Result := TTimeZone.Local.ToUniversalTime(d);
 end;
 {$ENDIF}
 
@@ -99,16 +85,9 @@ Function UnivDateTime2LocalDateTime(d:TDateTime):TDateTime;
 begin
   Result := UniversalTimeToLocal(d,-GetLocalTimeOffset);
 end;
-
 {$ELSE}
-var
- TZI:TTimeZoneInformation;
- LocalTime, UniversalTime:TSystemTime;
 begin
-  GetTimeZoneInformation(tzi);
-  DateTimeToSystemTime(d,UniversalTime);
-  SystemTimeToTzSpecificLocalTime(@tzi,UniversalTime,LocalTime);
-  Result := SystemTimeToDateTime(LocalTime);
+  Result := TTimeZone.Local.ToLocalTime(d);
 end;
 {$ENDIF}
 
@@ -122,7 +101,7 @@ begin
   Result := (Usec / 86400) + UnixStartDate;
 end;
 
-Function UnixTimeToLocalStr(UnixTime : Longint) : AnsiString;
+Function UnixTimeToLocalStr(UnixTime : Longint) : String;
 begin
   Result := DateTimeToStr(UnivDateTime2LocalDateTime(UnixToUnivDateTime(UnixTime)))
 end;