Como obter 'TZ' sem a definição de '$ TZ'?

2

Eu estou escrevendo um programa em Ruby. Eu preciso de uma maneira de obter algo como America/New_York como ActiveSupport::TimeZone e require "tzinfo" não podem obter meu fuso horário atual. (Observe que Time.now.zone pode obter itens como EST , mas eu preciso do formato de banco de dados tz, por exemplo, America/New_York .) Embora a maneira mais rápida de fazer isso seja apenas definir o usuário $TZ , TZ='America/New_York'; export TZ ou% código%. Eu estou procurando uma maneira de fazer isso sem ter o usuário definido tzselect . Existe algum arquivo de sistema que eu possa carregar ou um local de rede que eu possa consultar?

Eu preciso do fuso horário para coisas como

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.
    
por Christopher 30.10.2012 / 14:59

1 resposta

2

Na glibc, o fuso horário padrão é mantido em /etc/localtime . Isso pode ser um link simbólico para um arquivo no banco de dados tz (caso em que você poderia simplesmente readlink), mas não há garantia - pode ser um link físico ou até mesmo uma cópia. Nesse caso, você teria que ler o arquivo e compará-lo a todos os arquivos no diretório de dados tz.

Não tenho certeza sobre qual propósito você acredita que o valor America/New_York será exibido.

    
por 30.10.2012 / 16:20

Tags