oops I forgot to include the windows dll call.
this approach calculates the offset to utc once on load, and the uses the
offset as an adjustment to 6!:0. libc would be useful too, but would not be
xplatform, and would lose J's time format, and access to other datetime
functions.
getTimeZoneInfo=: 3 : 0
'tzstatus tzinfo'=. 'kernel32 GetTimeZoneInformation i *i'&cd <(,43#0)
NB. read TIME_ZONE_INFORMATION structure
tzinfo=. (1 (<:+/\ 1 16 4 1 16 4 1)}43#0) <;.2 tzinfo NB. 4 byte J integers
tzbias=. 0{:: tzinfo
tzinfo=. _3]\ }. tzinfo NB. Standard info ,: Daylight info
'name date bias'=. i. 3 NB. column labels for tzinfo
tmp=. (6&u:)@(2&ic)&.> name {"1 tzinfo NB. read names as unicode text
tmp=. (0{a.)&taketo&.> tmp NB. take to first NUL
tzinfo=. tmp (<a:;name)}tzinfo NB. amend TZ names
tmp=. _1&ic@(2&ic)&.> date{"1 tzinfo NB. read SYSTEMTIME structures
tzinfo=. tmp (<a:;date)}tzinfo NB. amend TZ dates
tzstatus;tzbias;<tzinfo
)
----- Original Message -----
From: bill lam <[email protected]>
To: "[email protected]" <[email protected]>
Cc:
Sent: Tuesday, March 25, 2014 8:48:44 PM
Subject: Re: [Jprogramming] datetime utc mod
there should be some api in libc or windows dll to get utc time directly IIRC.
26.03.2014, в 2:30, Pascal Jasmin <[email protected]> написал(а):
> Here are additions I've made to datetime.ijs (addons/type)
>
> utcnow_z_ '' returns utc time tested on mac and windows.
>
> a question about 6!:0 ... when DST changes, will it report the changes
> without reloading J? Some OS change the time automatically, while others ask
> to change clock, or do they all ask?
>
> Now_z_ =: 6!:0@:(''"_)
> utcBIAS_z_ =: 3 : 0 '' NB. may bug on unix if loaded at turn of month/year,
> so redo. Must reload on DST change
> if. IFWIN do. 0,~ >1{ getTimeZoneInfo_rgsdatetime_ ''
> elseif. IFIOS do. 0
> elseif. 1 do. t=. +/ 3600 60 1 * (2 3 4{6!:0'') -~ (0&".@:>@:(1&{),~
> ".@:>@:{:@:;:@:>@:{.) ':' cut 2!:0 'date -u'
> if. 0=15|t do. t, 0 else. 0 ,~ +/ 3600 60 1 * (2 3 4{6!:0'') -~
> (0&".@:>@:(1&{),~ ".@:>@:{:@:;:@:>@:{.) ':' cut 2!:0 'date -u' end. end.
> )
> utc_z_ =: tsPlus&utcBIAS
> utcnow_z_ =: utc@:Now ''"_
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm