web-dev-qa-db-fra.com

Convertir l'horodatage en millisecondes à partir de la ligne de commande Unix

Je connais

date -d @<timestamp in seconds>

et

awk '{print strftime("%c", <timestamp in seconds>)}'

mais si j'ai des millisecondes. Existe-t-il un moyen trivial de le faire sans supprimer les trois derniers caractères de l'horodatage à la milliseconde (ce n'est pas difficile de supprimer des caractères, mais je pense qu'il y aurait un moyen en une étape pour une tâche aussi simple)?

27
jonderry

Au lieu de supprimer des caractères, vous pouvez diviser par 1000:

awk '{print strftime("%c", ( <timestamp in milliseconds> + 500 ) / 1000 )}'

Ou:

date -d @$(  echo "(MilliSecondTimeStamp + 500) / 1000" | bc)

Modifier: ajusté pour les quotients au lieu de la division. Edit2: Thx zeekvfu, corrigé.

24
joepd
Perl -e 'print scalar localtime(<timestamp> / 1000)'
13
Greg Hewgill

Ce que j'ai dans mon profil bash sur Mac:

day() {
  date -r $(($1 / 1000))
}

day 1486743904359 Retour Fri Feb 10 08:25:04 PST 2017

13
Zaheer