我正在编写一个 Ruby 程序。我需要一种方法来获得类似America/New_York
as的东西ActiveSupport::TimeZone
,但require "tzinfo"
无法获得我当前的时区。 (请注意,Time.now.zone
可以得到类似的内容EST
,但我需要 tz 数据库格式,例如America/New_York
。)尽管执行此操作的简单方法是让用户设置$TZ
,TZ='America/New_York'; export TZ
或tzselect
.我正在寻找一种无需用户设置即可执行此操作的方法TZ
。是否有一些我可以加载的系统文件,或者我可以查询的网络位置?
我需要时区之类的东西。
require "active_support/core_ext/time/zones"
Time.zone = ENV['TZ']
p Time.zone.now # Returns current time in the local time zone using ActiveSupport.
答案1
在 glibc 上,默认时区保留在/etc/localtime
.这可能是 tz 数据库中文件的符号链接(在这种情况下,您可以简单地读取链接),但不能保证 - 它可能是硬链接,甚至是副本。在这种情况下,您必须读取该文件,然后将其与 tz 数据目录中的所有文件进行比较。
我不确定您认为获取该值America/New_York
会有什么目的。