2010-05-13 11 views
7

C'è un modo per ottenere l'offset di un determinato fuso orario (identificativo come EDT o America/New_York) da GMT nello script di shell linux?Offset di un determinato fuso orario da GMT nello script di shell linux

+0

Che cosa si "danno" esattamente? –

+0

L'identificatore di stringa per un fuso orario. per esempio. America/New_York o EDT. – dutch

+0

se si desidera calcolare da ora locale è possibile. Ma da una stringa non standard sembra un po 'impegnativa. – Nix

risposta

12

Esportare la variabile di ambiente TZ e stampare la data con% z per offset fuso orario.

#!/bin/sh 
export TZ=":Pacific/Auckland" 
date +%z 
+6

Oppure se non si desidera modificare l'ambiente corrente: 'TZ =": Pacific/Auckland "data +% z' –

+0

Non abbiamo bisogno di due punti prima del fuso orario –

+0

Si terrà conto dell'ora legale? –

2

Questo è un modo indiretto per farlo, ma funziona (loosely based on this):

#!/bin/bash 
ZONE=$1 
TIME=$(date +%s --utc -d "12:00:00 $ZONE") 
UTC_TIME=$(date +%s --utc -d "12:00:00") 
((DIFF=UTC_TIME-TIME)) 
echo - | awk -v SECS=$DIFF '{printf "%d",SECS/(60*60)}' 

Salva che, come tzoffset, renderlo eseguibile, ed eseguirlo in questo modo:

tzoffset PST 

Questo script nella sua forma attuale gestisce solo fusi orari abbreviati.

Problemi correlati