Precisei gerar o arquivo localtime conforme instruções do bom tutorial do site da rede nacional de pesquisa (RNP) em http://www.rnp.br/cais/alertas/2008/cais-alr-20081003.html, que atendeu a minha necessidade. Contudo, achei necessário ler a página manual do comando ZIC que só encontrei em inglês. O resultado foi então essa versão em português.
Correções são muito bem-vindas!
ZIC(8) ZIC(8)
NOME
zic - time zone compiler – compilador de horário de zona (de fuso horário).
SINOPSISzic [ -v ] [ -d directory ] [ -l localtime ] [ -p posixrules ] [ -L
leapsecondfilename ] [ -s ] [ -y command ] [ filename ... ]
DESCRIÇÃO
O programa zic lê o texto do(s) arquivo(s) denominado na linha de comando e cria arquivos de informação para a conversão de tempo especificado nessa entrada. Se um filename for substituído por‘-‘, então a entrada padrão é lida.
Essas opções estão disponíveis:
-d directory
Cria os arquivos de informação de conversão de tempo no diretório denominado em vez do diretório padrão denominado abaixo.
-l timezone
Usa o timezone (fuso horário) dado como tempo local. O comando zic vai agir como se a entrada contivesse uma linha link da forma:
Link timezone localtime
-p timezone
Usa as regras de timezones (fusos horários) quando manipulando variáveis de ambiente timezone no formato POSIX. O comando zic agirá como se a entrada contivesse uma linha link da forma:
Link timezone posixrules
-L leapsecondfilename
Lê a informação do Segundo de salto do arquivo com o nome dado. Se essa opção não for usada, nenhuma informação do segundo de salto aparecerá nos arquivos de saída.
-v Reclama se um year (ano) que aparece em um arquivo de dados está fora da faixa de anos representáveis por valores de time(2).
-s Limita valores de tempo armazenados nos arquivos de saída para valores que são os mesmos se eles forem tomados ser sinalizados ou não. Você pode usar essa opção para gerar arquivos compatíveis SVVS.
-y command
Usa o comando dado em vez de yearistype quando verificando tipo ano (veja a seguir).
As linhas de entrada são compostas de campos. Os campos são separados entre si por qualquer número de caracteres espaços em branco. Espaço em branco na cabeça e no rabo nas linhas de entrada é ignorado. Um caractere cerquilho (#) não entre aspa dupla na entrada introduz um comentário que expande até o final da linha que aparece o caractere cequilho. Caracteres espaço em branco e cerquilho (#) podem ser fechados entre aspas duplas (“”), se eles forem usados como parte de um campo. Qualquer linha que esteja em branco (após suprimir comentário) será ignorada. Linhas não em branco são esperadas ser uma de três tipos: linha de regras, linhas de zona e linhas de link.
Uma linha de regra (rule) tem a forma:
Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Por exemplo:
Rule US 1967 1973 - Apr lastSun 2:00 1:00 D
Os campos que compõe uma linha de regra são:
NAME
Fornece o nome (arbitrário) do conjunto de regras da qual essa regra é parte.
FROM
Fornece o primeiro ano no qual a regra se aplica. Qualquer inteiro pode ser fornecido; o calendário Gregoriano é assumido. A palavra minimum (ou uma abreviação) significa que o ano mínimo que pode ser representado como um inteiro. A palavra maximum (ou uma abreviação) significa o ano máximo que pode ser representado como inteiro. As Regras podem descrever tempos que não são representáveis como valores de tempo, os tempos que não puderem ser representados serão ignorados; isso permite que as regras sejam portáveis entre hosts com tipos de valor de tempo diferentes.
TO
Fornece o ano final no qual a regra se aplica. Em adição as palavras minimum e maximum (como explicado acima), a palavra only (ou uma abreviação) pode ser usada para repetir o valor do campo FROM.
TYPE
Fornece o tipo de ano no qual a regra se aplica. Se TYPE for ‘-‘, então a regra se aplica em todos os anos entre FROM e TO inclusive. Se TYPE for algo diferente, então zic executa o comando yearistype tipo de ano para verificar o tipo de ano: um status de saída igual a zero é tomado para significar que o ano é do tipo dado; um status de saída 1 é tomado para significar que o ano não é do tipo fornecido.
IN
Nomeia o mês no qual a regra tem efeito. Nomes dos meses podem ser abreviados.
ON
Fornece o dia no qual a regra tomará efeito. Formas reconhecidas incluem:
5 | No quinto dia do mês. |
lastSun | No último Domingo do mês. |
lastMon | Na última Segunda do mês. |
Sun>=1 | No primeiro Domingo logo após ou igual ao dia primeiro do mês, ou seja, no primeiro Domingo do mês. |
Sun>=8 | No primeiro Domingo logo após o dia 8 ou igual ao oitavo dia do mês, ou seja, no segundo domingo do mês. |
Sun>=15 | No primeiro Domingo logo após o dia 15 ou igual ao décimo quinto dia do mês, ou seja, no terceiro domingo do mês. |
Sun>=22 | No primeiro Domingo logo após o dia 22 ou igual ao vigésimo segundo dia do mês, ou seja, no quarto domingo do mês. |
Sun<=25 | No último Domingo antes do dia 25 ou no domingo igual ao vigésimo quinto dia do mês. |
Nomes de dias da semana podem ser abreviados ou colocados completos. Observe que não pode haver nenhum espaço dentro do campo ON.
AT
Fornece a hora do dia na qual a regra toma efeito. Formas reconhecidas incluem:
2 | Tempo em horas. |
2:00 | Tempo em horas e minutos. |
15:00 | Tempo no formato 24-horas (para horário vespertino). |
1:28:14 | Tempo em horas, minutos, e segundos. |
Onde 0 hora é meia noite no começo do dia, e 24 horas é meia noite no final do dia. Qualquer dessas formas pode ser seguida pela letra w se a hora dada for à hora local “wall clock”, s se a hora dada for à hora local “Standard”, ou u (ou g ou z) se a hora dada for à hora do tempo universal; na ausência de um indicador, a hora do relógio local será assumido.
SAVE
Fornece a quantidade de tempo a ser adicionada à hora local padrão quando a regra tomar efeito. Esse campo tem o mesmo formato que o campo AT (embora, claro, os sufixos w e s não sejam usados).
LETTER/S
Fornece a "parte variável" (por exemplo, o "S" ou "D" em "EST" ou "EDT") das abreviações de timezone (fuso horário) a ser usado quando essa regra tomar efeito. Se esse campo for ‘-‘, a parte variável é nula.
Uma linha de zona (zone line) possui a forma:
Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL]
Por exemplo:
Zone Australia/Adelaide 9:30 Aus CST 1971 Oct 31 2:00
Os campos que compõem uma linha de zona são:
NAME
O nome do timezone (fuso horário). Esse é o nome usado na criação do arquivo de informação de conversão de tempo para o fuso horário.
GMTOFF
A quantidade de tempo a adicionar ao horário UTC para obter a hora padrão nessa zona (fuso). Esse campo possui o mesmo formato que o dos campos AT e SAVE das linhas de regra; inicie o campo com um sinal menos se a hora precisa ser subtraída do horário UTC.
RULES/SAVE
O nome da(s) regra(s) que se aplica no timezone (fuso horário) ou, alternativamente, uma quantidade de tempo a adicionar ao horário local padrão. Se esse campo for ‘-‘, então o horário padrão sempre se aplica nesse timezone (fuso horário).
FORMAT
O formato para abreviação de timezone (fuso horário) nesse fuso. O par de caracteres ‘%s’ é usado para mostrar onde entra a “parte variável” da abreviação do fuso horário. Alternativamente, uma barra (/) separa abreviações do horário padrão e do horário daylight.
UNTIL
O horário no qual o offset UTC ou a(s) regra(s) mudam para uma localização. É especificado como um ano, um mês, um dia, e uma hora do dia. Se isso for especificado, a informação de timezone (fuso horário) é gerada do offset UTC dado e a regra alterada até o tempo especificado. O mês, dia, e hora do dia possui o mesmo formato que o formato das colunas IN, ON, e AT de uma regra; colunas finais podem ser omitidas, e é padronizado com o valor mais antigo possível das colunas faltantes.
A linha seguinte precisa ser uma linha “continuação”; essa tem a mesma forma que de uma linha de zona exceto que a string “Zone” e o nome sejam omitidos, porque a linha continuação colocará a informação no início do tempo especificado como o campo UNTIL na linha anterior no arquivo usado pela linha anterior. Linhas de continuação podem conter um campo UNTIL, justamente como faz as linhas de zona, indica que a próxima linha é uma continuação adicional.
Uma linha link possui a forma:
Link LINK-FROM LINK-TO
Por exemplo:
Link Europe/Istanbul Asia/Istanbul
O campo LINK-FROM deve parecer igual ao campo NAME em toda linha de zona; o campo LINK-TO é usado como um nome alternativo para essa zona (fuso horário).
Exceto para linha de continuação, as linhas podem aparecer em qualquer ordem na entrada.
Linhas no arquivo que descrevem os segundos de salto têm a seguinte forma:
Leap YEAR MONTH DAY HH:MM:SS CORR R/S
Por exemplo:
Leap 1974 Dec 31 23:59:60 + S
Os campos YEAR, MONTH, DAY, e ‘HH:MM:SS’ informa quando o segundo de salto aconteceu. O campo CORR deve ser “+”, se um Segundo foi adicionado ou “-“ se um segundo foi saltado. O campo R/S deve ser (uma abreviação para) “Stationary", se o tempo do segundo de salto dado pelo outros campos deve ser interpretado como UTC ou (uma abreviação para) “Rolling”, se o tempo do segundo de salto dado pelos outros campos deve ser interpretado como hora local.
OBSERVAÇÃO:
Para as áreas com mais de dois tipos de horário local, você pode precisar usar a hora local padrão no campo AT da regra de tempos de transição anterior para assegurar que o tempo de transição anterior gravado no arquivo compilado esteja correto.
ARQUIVO
/usr/share/zoneinfo – diretório padrão usado pelos arquivos.
VEJA TAMBÉM
ctime(3), dump(1) ZIC(8)