web-dev-qa-db-fra.com

Convertir l'heure Unix Epoch en date lisible par l'homme sur Mac OSX - BSD

Sur mon Mac OSX, mon script bash a un temps Epoch 123439819723. Je peux convertir la date au format lisible par date -r 123439819723, Ce qui me donne Fri Aug 26 09:48:43 EST 5881.

Mais je veux que la date soit au format mm/ddd/yyyy:hh:mi:ss. L'option date --date Ne fonctionne pas sur ma machine.

20
Nehal Shah

Voici:

# date -r 123439819723 '+%m/%d/%Y:%H:%M:%S'
08/26/5881:17:48:43
31
mike.dld

Pour convertir une heure d'époque UNIX avec BSD date, utilisez

date -j 123439819723 -f %s

Le -j empêche date d'essayer de régler l'horloge système et -f spécifie le format entrée. Vous pouvez ajouter +<whatever> pour définir le format sortie, comme avec GNU date.

11
chepner

de la commande Shell

[aks@APC ~]$ date -r 1474588800
Fri Sep 23 05:30:00 IST 2016

[aks@APC ~]$ date -ur 1474588800
Fri Sep 23 00:00:00 UTC 2016

[aks@APC ~]$ echo "1474588800" | xargs -I {} date -jr {} -u
Fri Sep 23 00:00:00 UTC 2016
3
UserszrKs

Solution combinée pour fonctionner sur Mac OS.

Code shell:

T=123439819723 
D=$(date -j -f %s  $(($T/1000)) '+%m/%d/%Y:%H:%M:%S').$(($T%1000))
echo "[$T] ==> [$D]"

Production:

[123439819723] ==> [11/29/1973:11:50:19.723]

Ou une ligne:

> echo 123439819723 | { read T; D=$(date -j -f %s  $(($T/1000)) '+%m/%d/%Y:%H:%M:%S').$(($T%1000));  echo "[$T] ==> [$D]" }
[123439819723] ==> [11/29/1973:11:50:19.723]
1
0x8BADF00D