Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 03/07/2018, à 15:57

julien01

Convertir date UTC en locale

Bonjour,

J'ai un fichier CSV sous cette forme :
date_UTC;heure_UTC;colonne1,colonne2

(la date est au format AAAAMMDD , l'heure HHMMSS)

Je souhaiterai pouvoir convertir les dates et heures de ce CSV au format heure locale (soit en France actuelle +2 heures par rapport a UTC) tout en conservant mes autres colonnes.

J'avais réussi a faire l'inverse avec un script en bash ou je passe mon fichier en argument, mais là je coince...

Hors ligne

#2 Le 03/07/2018, à 18:07

erresse

Re : Convertir date UTC en locale

Bonjour,
À titre d'essai, passe cette ligne

date;date --date '2 hours'

Tu obtiens la date courante du jour et la date avec 2 heures de plus.
Après, il faut adapter pour traiter la date provenant de ton fichier au lieu de celle du jour, mais c'est une piste à creuser...
Edit: par exemple

date -d "2018-07-03 23:00 2 hours"
mercredi 4 juillet 2018, 01:00:00 (UTC+0200)

Dernière modification par erresse (Le 03/07/2018, à 18:17)


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#3 Le 03/07/2018, à 19:27

pingouinux

Re : Convertir date UTC en locale

Bonjour,
Il y a sans doute plus simple. Il faudra aussi ne pas traiter la ligne de titres.

while IFS=";" read d h suite
do
   h=$(sed -r 's/(..)/\1:/g;s/.$//' <<<"$h")
   date -d @$(date -ud "$d $h" +"%s") +"%Y%m%d;%H%M%S;$suite"
done <fichier1.csv >fichier2.csv

Édité :
Et pour recopier sans y toucher la première ligne du fichier :

(
head -1
while IFS=";" read d h suite
do
   h=$(sed -r 's/(..)/\1:/g;s/.$//' <<<"$h")
   date -d @$(date -ud "$d $h" +"%s") +"%Y%m%d;%H%M%S;$suite"
done 
) <fichier1.csv >fichier2.csv

Dernière modification par pingouinux (Le 03/07/2018, à 19:31)

Hors ligne

#4 Le 03/07/2018, à 22:35

julien01

Re : Convertir date UTC en locale

Un grand merci, ça marche à la perfection ! big_smile

Hors ligne