難解なので記録しておく。
現在日時を UTC で得るには、
6!:0 '' 2020 8 12 21 26 14.8005
6!:0
で一つの動詞 (一階の函數) である 6!: Time。引數の ''
は出力形式を指定する文字列で、''
を指定した時には特別に vector で日時が返って來る。
現在の Unix 秒を得るには、
<.((tsrep 6!:0'')-tsrep 1970 1 1 0 0 0)%1000 1597267682
tsrep
は 1800-01-01 00:00:00Z から引數迄の milli 秒を得る動詞 Standard Library/dates - J Wiki。二項動詞としての %
は浮動小數點除算、二項動詞としての -
は引き算、單項動詞としての <.
は floor。演算は右結合。
現在の timestamp を milli 秒で得るには 1000 で割らなければ好い。
<.(tsrep 6!:0'')-tsrep 1970 1 1 0 0 0 1597268141776
Unix 秒から日時を起こすには、
t=:1597267682 (todate(t%60*60*24)+todayno 1970 1 1),(24|<.t%60*60),(60|<.t%60),(60|t) 2020 8 12 21 28 2
todate
は 1800-01-01 からの日數を取って日時を表す vector を返す動詞。todayno
は日時を表す vector を取って 1800-01-01 からの日數を返す動詞。二項動詞としての *
は掛け算、二項動詞としての |
は整數除算の剩り、二項動詞としての ,
は vector を作る。
hook や fork を巧く使へば變數を無くせる筈だが面倒だ。