Terminal : convertir une heure UNIX

Anthony Nelzin-Santos |

Les développeurs sont souvent confrontés à l’heure UNIX, une mesure du temps qui correspond au nombre de secondes écoulées depuis le 1er janvier 1970 (ou presque). Elle présente l’avantage d’être simple à manipuler, mais elle est difficilement lisible : la rédaction de cette phrase, par exemple, a commencé à l’heure UNIX 1403537913.

Il faut donc bien souvent la convertir, ce que fait très bien un site comme Epoch Converter, mais encore faut-il avoir une connexion au réseau. Les utilisateurs d’Alfred peuvent se tourner vers le workflow conçu par le développeur Thomas Upton : il fournit la même sortie que la commande date -jf "%s" "1403537913" +"%a %b %d %T %Z %Y", simplement en tapant ts (suivie d’une espace et de l’heure UNIX).

Le résultat produit, dans notre cas, serait Lun jui 23 17:38:33 CEST 2014 : il est utile s’il s’agit simplement d’avoir une référence, beaucoup moins s’il s’agit de récupérer une valeur pour un développement en cours. La commande date -jf "%s" "1403537913" +"%Y%m%dT%T%z" produit un timestamp moins lisible, mais qui respecte la norme RFC 3339, 20140623T17:38:33+0200 dans notre exemple.

Pour l’intégrer à un script ou un lanceur, il faudra utiliser cette syntaxe : echo -n "1403537913" | xargs -J {} date -j -f "%s" {} +"%Y%m%dT%T%z".

avatar sekaijin | 

le format ISO est la référence
http://fr.wikipedia.org/wiki/ISO_8601

il offre la possibilité de varier les format tout en restant standard
A+JYT

avatar YARK | 

Tiens, moi je cherchais un truc tout con : additionner ou soustraire des heures, secondes, minutes avec un petit utilitaire sans avoir à passer par numbers ou excel.
Pas trouvé...

avatar Le Pendu de Charles Ville | 

Contactez moi via le forum pour me donner plus d'éléments sur vos besoins et je serait en mesure de vous faire une petite App...

avatar YARK | 

Merci, c'est gentil, c'était juste un besoin ponctuel que j'ai eu il n'y a pas si longtemps :
monter une vidéo avec une dizaine de bouts de films différents :
Certains où l'heure, les minutes et les secondes apparaissaient à certains moments sur le film, mais où la date de la vidéo par elle même était erronée et d'autres "bandes" apparemment semblables mais où l'incrémentation du temps était exacte sur la vidéo.
Et donc pour caler, voire synchroniser les pistes, c'aurait été sympa d'avoir une "calculatrice" pour additionner ou retrancher du temps pour bien placer les vidéos les unes par rapport aux autres.

Maintenant peut-être qu'Applescript est simple d'utilisation, mais, clairement, c'est pas mon domaine ni ma tasse de thé.

En tout cas merci pour cette proposition, je suis qu'une telle petite application aurait sa place sur l'Applestore, en tout cas j'en ai pas vu de semblable.
Ou mieux un plugin pour Final Cut Pro, peut-être existe-t-il, en tout cas je ne l'ai pas trouvé...

avatar mocmoc | 

Allais-tu faire la même blague que moi ? ; Nous sommes le XX-après UNIX.
J'ai voulu la faire mais j'ai été bloqué par ce truc tout con que tu cherche : Soustraire le 25/06 2014 à Minuit au 01/01/1970 à 00h00, et trouver un résultat en jours, secondes, nanosecondes...lol

avatar world28 | 

@yark

Pas difficile à faire en AppleScript ! Il faut un peu se creuser le cerveau pendant quelques minutes, c'est tout !! :)

avatar Minileul | 

@world28 :
Et si on ne connaît pas "Apple script"? ☺️

avatar world28 | 

On apprend en 2' ! Mais après c'est aussi l'usage que l'on fait de son mac. Certes on n'est pas obligé d'apprendre ce langage hyperfacile mais cela simplifie vraiment la vie. Donc c'était un simple conseil ! :)

avatar Philactere | 

@world28 :
Une petite question, le développement est votre métier ou une passion ?
Si oui je te crois volontiers que l'AppleScript s'apprend en 2 mn... Pour vous.
Mais pour quelqu'un de totalement ignorant des langages informatique et des concepts sous-jacents, structures, syntaxe, et. ça ne va pas prendre 2 mn.
Ne prenez pas votre cas pour une généralité svp.

avatar sekaijin | 

une petite astuce avec la commande date

date -j -f "%Y-%m-%d" "2010-03-00" "+%s"
le 00 Mars 2010

date -jf "%s" $(date -j -f "%Y-%m-%d" "2010-03-00" "+%s")
Dim 28 fév 2010 20:02:16 CET

cela permet de facilement savoir quel est le dernier jour de févier.

A+JYT

avatar Link1993 | 

Je sais pas, mais lancer "date" tout simplement suffit en fait ^^

avatar b_eddy | 

C'est l'Unix moyen de partir au C Shell !

avatar senze | 

Joli…. :)

avatar Seccotine | 

Il y a presque 2000 commandes accessible via le Terminal. On va avoir droit à une new sur une d'entre elle piochée au hasard de temps en temps ?

CONNEXION UTILISATEUR