Browse Source

+ implemented SysUtils.GetLocalTime for WASI

Nikolay Nikolov 3 years ago
parent
commit
0934df505c
1 changed files with 13 additions and 1 deletions
  1. 13 1
      rtl/wasi/sysutils.pp

+ 13 - 1
rtl/wasi/sysutils.pp

@@ -667,8 +667,20 @@ end;
 {$I tzenv.inc}
 
 Procedure GetLocalTime(var SystemTime: TSystemTime);
+var
+  NanoSecsPast: __wasi_timestamp_t;
 begin
-end ;
+  if __wasi_clock_time_get(__WASI_CLOCKID_REALTIME,1000000,@NanoSecsPast)=__WASI_ERRNO_SUCCESS then
+    begin
+      EpochToLocal(NanoSecsPast div 1000000000,
+        SystemTime.Year,SystemTime.Month,SystemTime.Day,
+        SystemTime.Hour,SystemTime.Minute,SystemTime.Second);
+      SystemTime.MilliSecond := (NanoSecsPast div 1000000) mod 1000;
+      SystemTime.DayOfWeek := DayOfWeek(EncodeDate(SystemTime.Year,SystemTime.Month,SystemTime.Day))-1;
+    end
+  else
+    FillChar(SystemTime,SizeOf(SystemTime),0);
+end;
 
 
 {****************************************************************************