Comment convertir une chaîne de date au fuseau horaire actuel sur la ligne de commande?

11

Comment puis-je convertir une chaîne de date / heure, par exemple 2011-11-13 08:11:02 +0000, dans mon fuseau horaire local sur la ligne de commande?

Daniel Beck
la source
N'hésitez pas à ajouter des réponses différentes, mais n'oubliez pas que OS X a BSD date, pas GNU date. Les options sont assez différentes.
Daniel Beck

Réponses:

17

Utilisez date -jf "<input format>" "<input value>" +"<output format>".

Ce qui suit convertit une date UTC en mon fuseau horaire local (CET):

$ date -jf "%Y-%m-%d %H:%M:%S %z" "2011-11-13 08:11:02 +0000" +"%Y_%m_%d__%H_%M_%S"
2011_11_13__09_11_02

Si vous spécifiez le même format de date pour l'entrée et la sortie, vous convertissez uniquement l'heure dans votre fuseau horaire local. Mais, comme dans l'exemple, vous pouvez combiner cela avec une conversion de format.

Daniel Beck
la source
2
Le fuseau horaire cible peut être modifié en réglant temporairement $TZ: TZ=EST date -jf %H%z 23+0100 +%I%p05PM
Lri