For some reason I can only get Local
as the output rather than something like Europe/Berlin
within Crystal.
Time::Location.local.name # => "Local"
Time.local.location.name # => "Local"
Time.local.to_s("%Z") # => "Local"
For some reason I can only get Local
as the output rather than something like Europe/Berlin
within Crystal.
Time::Location.local.name # => "Local"
Time.local.location.name # => "Local"
Time.local.to_s("%Z") # => "Local"
Time::Location
gets the information from the environment. See location.cr#L353-370 for detail.
I wonder if this could be improved, as most linux distros for example don’t expose the location as an ENVVAR
TZ
is generally unset.
If TZ
is unset, the location is loaded from /etc/localtime
and has the name Local
.
/etc/localtime
is usually a link into the time zone database and by following that link you might be able to find the respective name:
target = Path[File.readlink("/etc/localtime")]
Path[target.parts[-2..]] # => Path["Europe/Berlin"]
Perhaps Time::Location.load_local
could defer the name like that if /etc/localtime
is a link into the TZDB.