Existe-t-il un moyen rapide de convertir un horodatage Unix en une date à partir de la ligne de commande Unix? 'Date' peut fonctionner, sauf qu'il est plutôt difficile de spécifier chaque élément (mois, jour, année, heure, etc.), et je n'arrive pas à comprendre comment le faire fonctionner correctement. Il semble qu'il pourrait y avoir un moyen plus facile - ai-je oublié quelque chose?Convertir à partir de l'heure Unix sur la ligne de commande
Répondre
Avec date
de GNU, vous pouvez faire:
date -d "@$TIMESTAMP"
# date -d @0
Wed Dec 31 19:00:00 EST 1969
(De: BASH: Convert Unix Timestamp to a Date)
Sur OS X, utilisez date -r
.
date -r "$TIMESTAMP"
Vous pouvez également utiliser strftime()
. Il n'est pas disponible directement à partir du shell, mais vous pouvez y accéder via gawk. Le spécificateur %c
affiche l'horodatage en fonction des paramètres régionaux.
echo "$TIMESTAMP" | gawk '{print strftime("%c", $0)}'
# echo 0 | gawk '{print strftime("%c", $0)}'
Wed 31 Dec 1969 07:00:00 PM EST
awk 'BEGIN { print strftime("%c", 1271603087); }'
date -d @1278999698 +'%Y-%m-%d %H:%M:%S'
Lorsque le nombre derrière @
est le nombre en secondes
Sur OSX 10.8, il est 'date -r 1278999698 + '% Y-% m-% d% H:% M:% S'' (GMT) ou simplement' date -r 1278999698' –
Si vous trouvez la notation maladroite, peut-être le -R
-option ne l'aide. Il sort la date au format RFC 2822. Vous n'aurez donc pas besoin de tous ces identifiants: date -d @1278999698 -R
. Une autre possibilité consiste à afficher la date en secondes dans votre environnement local: date -d @1278999698 +%c
. Devrait être facile à retenir. :-)
La solution standard de Perl est:
echo $TIMESTAMP | perl -nE 'say scalar gmtime $_'
(ou localtime, si l'on préfère)
Cette solution fonctionne avec les versions de date qui ne prennent pas en charge date -d @
. Il ne nécessite pas AWK ou d'autres commandes. Un horodatage Unix est le nombre de secondes écoulées depuis le 1er janvier 1970, UTC, il est donc important de spécifier UTC.
date -d '1970-01-01 1357004952 sec UTC'
Mon Dec 31 17:49:12 PST 2012
Si vous êtes sur un Mac, utilisez:
date -r 1357004952
commande pour obtenir époque:
date +%s
1357004952
Le crédit va à Anton: BASH: Convert Unix Timestamp to a Date
Comme @ TomMcKenzie dit dans un commentaire à une autre réponse, date -r 123456789
est sans doute un plus commun (c.-à-d. plus largement implémenté) solution simple pour les temps donnés comme secondes depuis l'Epoque Unix, mais malheureusement il n'y a pas de solution portable universelle garantie.
L'option -d
sur de nombreux types de systèmes signifie quelque chose de complètement différent de l'extension --date
de GNU Date. Malheureusement, la date GNU n'interprète pas -r
de la même manière que ces autres implémentations. Donc, malheureusement, vous devez savoir quelle version de date
vous utilisez, et beaucoup de vieilles commandes Unix date
ne supportent aucune de ces options.
Pire encore, ne reconnaît ni date
Posix -d
ni -r
et ne fournit aucun moyen standard dans toute commande du tout (que je sache) pour formater un temps Unix à partir de la ligne de commande (depuis awk POSIX manque aussi strftime()
). (Vous ne pouvez pas utiliser touch -t
et ls
parce que le premier n'accepte pas un temps donné en secondes depuis l'époque Unix.)
Remarque si Le vrai Awk disponible directement de Brian Kernighan n'ont maintenant la fonction strftime()
intégrée ainsi qu'une fonction systime()
pour retourner l'heure actuelle en secondes depuis l'Epoque Unix), alors peut-être que la solution Awk est la plus portable.
Légère correction de la réponse de dabest1 ci-dessus. Indiquez le fuseau horaire en UTC, pas GMT:
$ date -d '1970-01-01 1416275583 sec GMT'
Tue Nov 18 00:53:03 GMT 2014
$ date -d '1970-01-01 1416275583 sec UTC'
Tue Nov 18 01:53:03 GMT 2014
La seconde est correcte. Je pense que la raison en est qu'au Royaume-Uni, l'heure d'été était en vigueur de 1968 à 1971.
Merci, j'ai mis à jour ma réponse. – dabest1
D'autres exemples sont difficiles à retenir. À son plus simple:
date -r 1305712800
- 1. Publier sur RSS à partir de la ligne de commande
- 2. trouver et remplacer la ligne de commande unix
- 3. Comment compiler un simple programme boost à partir de la ligne de commande dans unix
- 4. Créer une vidéo à partir d'images Unix ligne de commande avec des transitions
- 5. modifier le fichier sql sur l'utilisation de la ligne de commande sur unix
- 6. Résolution automatique Perforce à partir de la ligne de commande?
- 7. a commencé à partir de la ligne de commande?
- 8. comment appeler correctement la commande unix à partir d'autres dirs
- 9. Perl exécution à partir de la ligne de commande question
- 10. Comment créer SQLite3 à partir de la ligne de commande?
- 11. Exécuter Java de la ligne de commande
- 12. ffmpeg exécuté à partir de la ligne de commande, à partir de mod_fcgi tronqué après achèvement
- 13. SWT & JFace à partir de la ligne de commande
- 14. compiler java à partir de la ligne de commande
- 15. envoyer des valeurs à partir de la ligne de commande?
- 16. Rubygems plus faciles à partir de la ligne de commande?
- 17. texte complexe remplacer à partir de la ligne de commande
- 18. Filigrane vidéo à partir de la ligne de commande Linux
- 19. Publier ClickOnce à partir de la ligne de commande
- 20. Exécution groovy à partir de la ligne de commande
- 21. Version d'assemblage à partir de la ligne de commande?
- 22. Exécution d'un Zend_Application à partir de la ligne de commande?
- 23. cvs checkout à partir de la ligne de commande Windows
- 24. Exécuter garbage collector à partir de la ligne de commande?
- 25. Convertir la ligne de commande cURL en PHP cURL
- 26. Comment interagir avec un calendrier MS Exchange à partir d'une ligne de commande Unix?
- 27. Xcode: Outils de ligne de commande UNIX Installation
- 28. Grammaire pour les options de ligne de commande Unix
- 29. Processeur d'image de ligne de commande Unix (osx)?
- 30. Python exécuter la ligne de commande (heure)
Quelle coque utilisez-vous? Frapper? Zsh? Tiret? –
Bash - oublié de mentionner! – chimeracoder
duplication possible de [Comment convertir les horodatages en dates dans bash?] (Http://stackoverflow.com/questions/2371248/how-to-convert-timestamps-to-dates-in-bash) – user