DateTime documentation contains the following sentence:
If you want to get the current time in Unix seconds, do not do
DateTime.utc_now() |> DateTime.to_unix()
. Simply callSystem.os_time(:second)
instead.
Nice, but… System documentation says about os_time/0
and os_time/1
as follows:
This time may be adjusted forwards or backwards in time with no limitation and is not monotonic.
Now, I DO “want to get the current time in Unix seconds” (or microseconds) but I want it to be the current time in UTC, God forbid in one of the tons of useless “time zones”, nor with / without equally useless DST changes. So the question - how is doing System.os_time(:second)
supposed to be a better equivalent of doing DateTime.utc_now() |> DateTime.to_unix()
? Am I missing something here?
P. S. Yes, I do run my computers (including the one I write these words on) on UTC so I believe in such case I expect those to be equivalent, right? Still more than once I had to work on servers configured… well… differently and had to deal with code that never expected to be run “in different timezone”, so I am really curious what’s the case here