ifdef mswindows instead of win32 for 64 bits support
[lcore.git] / btime.pas
index e0b0c4bde6059feade1a457b8da0523a6d9b83c5..df4f91ec8f301bc59de4912b0fe46f38ba395db4 100644 (file)
--- a/btime.pas
+++ b/btime.pas
@@ -12,7 +12,7 @@ unit btime;
 \r
 interface\r
 \r
-{$ifdef win32}\r
+{$ifdef mswindows}\r
 uses\r
   ltimevalstuff;\r
 {$endif}  \r
@@ -50,10 +50,12 @@ procedure gettimezone;
 procedure timehandler;\r
 procedure init;\r
 \r
-function timestring(i:tunixtimeint):string;\r
-function timestrshort(i:tunixtimeint):string;\r
+function timestring(i:tunixtimeint):string;      // Wednesday August 15 2012 -- 16:21:09 +02:00\r
+function timestrshort(i:tunixtimeint):string;    // Wed Aug 15 16:21:09 2012\r
+function timestriso(i:tunixtimeint):string;      // 2012-08-15 16:21:09\r
+function timestrisoutc(i:float):string;          // 2012-08-15T14:21:09.255553Z\r
 \r
-{$ifdef win32}\r
+{$ifdef mswindows}\r
 function unixtimefloat_systemtime:float;\r
 {$endif}\r
 \r
@@ -61,12 +63,12 @@ function oletounixfloat(t:float):float;
 function oletounix(t:tdatetime):tunixtimeint;\r
 function unixtoole(i:float):tdatetime;\r
 \r
-{$ifdef win32}\r
+{$ifdef mswindows}\r
 function mmtimefloat:float;\r
 function qpctimefloat:float;\r
 {$endif}\r
 \r
-{$ifdef win32}\r
+{$ifdef mswindows}\r
 procedure gettimeofday(var tv:ttimeval);\r
 {$endif}\r
 \r
@@ -688,9 +690,43 @@ begin
   timezonestr;\r
 end;\r
 \r
+function timestriso(i:tunixtimeint):string;\r
+var\r
+  y,m,d,h,min,sec,ms:word;\r
+  t:tdatetime;\r
+begin\r
+  t := unixtoole(i+timezone);\r
+  decodedate(t,y,m,d);\r
+  decodetime(t,h,min,sec,ms);\r
+  result := inttostr(y)+'-'+inttostr(m div 10)+inttostr(m mod 10)+'-'+inttostr(d div 10)+inttostr(d mod 10)+' '+inttostr(h div 10)+inttostr(h mod 10)+':'+inttostr(min div 10)+inttostr(min mod 10)+':'+inttostr(sec div 10)+inttostr(sec mod 10);\r
+end;\r
+\r
+function timestrisoutc(i:float):string;\r
+var\r
+  y,m,d,h,min,sec,ms:word;\r
+  t:tdatetime;\r
+  fr:float;\r
+begin\r
+  t := unixtoole(i);\r
+  decodedate(t,y,m,d);\r
+  decodetime(t,h,min,sec,ms);\r
+  result := inttostr(y)+'-'+inttostr(m div 10)+inttostr(m mod 10)+'-'+inttostr(d div 10)+inttostr(d mod 10)+'T'+inttostr(h div 10)+inttostr(h mod 10)+':'+inttostr(min div 10)+inttostr(min mod 10)+':'+inttostr(sec div 10)+inttostr(sec mod 10);\r
+  fr := frac(i);\r
+\r
+  result := result + '.'+\r
+  inttostr(trunc(fr*10) mod 10)+\r
+  inttostr(trunc(fr*100) mod 10)+\r
+  inttostr(trunc(fr*1000) mod 10)+\r
+  inttostr(trunc(fr*10000) mod 10)+\r
+  inttostr(trunc(fr*100000) mod 10)+\r
+  inttostr(trunc(fr*1000000) mod 10)+'Z';\r
+\r
+end;\r
+\r
+\r
 procedure init;\r
 begin\r
-  {$ifdef win32}timebeginperiod(1);{$endif} //ensure stable unchanging clock\r
+  {$ifdef mswindows}timebeginperiod(1);{$endif} //ensure stable unchanging clock\r
   fillchar(mmtime_driftavg,sizeof(mmtime_driftavg),0);\r
   settimebias := 0;\r
   gettimezone;\r