1601 1 1 0 0 0 instant <timestamp> ;
: FILETIME>windows-time ( FILETIME -- n )
- [ FILETIME-dwLowDateTime ] keep
- FILETIME-dwHighDateTime >64bit ;
+ [ FILETIME-dwLowDateTime ]
+ [ FILETIME-dwHighDateTime ]
+ bi >64bit ;
: windows-time>timestamp ( n -- timestamp )
10000000 /i seconds windows-1601 swap time+ ;
: windows-time>FILETIME ( n -- FILETIME )
"FILETIME" <c-object>
[
- [ 32 bits set-FILETIME-dwLowDateTime ] 2keep
- [ -32 shift ] dip set-FILETIME-dwHighDateTime
+ [ [ 32 bits ] dip set-FILETIME-dwLowDateTime ]
+ [ [ -32 shift ] dip set-FILETIME-dwHighDateTime ] 2bi
] keep ;
: timestamp>FILETIME ( timestamp -- FILETIME/f )
- [ >gmt timestamp>windows-time windows-time>FILETIME ] [ f ] if* ;
+ dup [ >gmt timestamp>windows-time windows-time>FILETIME ] when ;
: FILETIME>timestamp ( FILETIME -- timestamp/f )
FILETIME>windows-time windows-time>timestamp ;