Question: The Unix epoch is the starting point of time for Unix based computing systems, and it is set to January 1, 1970. Unix epoch time an an integer which represents the time elapsed since the Unix epoch. In q, we can cast integers to timestamps, with the integer being interpreted as the number of nanoseconds since epoch. The epoch for q, however, is January 1, 2000, so this poses a problem if you simply cast a Unix epoch time to a q timestamp. The Unix epoch has to be accounted for and adjusted. Define a function 'frmUnixEp' (from Unix epoch) that takes in an integer representing the Unix epoch time (in nanoseconds) and converts it to q epoch time.
q)frmUnixEp 1589841242176*1e6 //convert to nanos 6.431564e+17 q)"p"$frmUnixEp 1589841242176*1e6 2020.05.18D22:34:02.176000000 q)"p"$frmUnixEp 1e9*"J"$first system"date +%s" // convert current Unix epoch time to q timestamp 2020.05.18D23:20:55.000000000