Question Obtenir l'heure actuelle en secondes depuis l'époque sur Linux, Bash


J'ai besoin de quelque chose de simple comme date, mais en secondes depuis 1970 au lieu de la date actuelle, heures, minutes et secondes.

date ne semble pas offrir cette option. Y a-t-il un moyen facile?


439
2017-07-07 14:22


origine


Réponses:


Cela devrait fonctionner:

date +%s

812
2017-07-07 14:25



Juste pour ajouter.

Obtenez les secondes depuis l'époque (1 janvier 1970) pour une date donnée (par exemple, le 21 octobre 1973).

date -d "Oct 21 1973" +%s


 Convertir le nombre de secondes en date

date --date @120024000


  La commande date est assez polyvalent. Un autre truc sympa que vous pouvez faire avec la date (copié sans vergogne de date --help).   Afficher l'heure locale pour 9 heures vendredi prochain sur la côte ouest des États-Unis

date --date='TZ="America/Los_Angeles" 09:00 next Fri'

Mieux encore, prenez le temps de lire la page de manuel http://www.manpages.info/linux/date.1.html


102
2017-09-11 08:06



Jusqu'à présent, toutes les réponses utilisent le programme externe date.

Depuis Bash 4.2, printf a un nouveau modificateur %(dateformat)T que, lorsqu'il est utilisé avec argument -1 sort la date du jour avec le format donné par dateformat, manipulé par strftime(3) (man 3 strftime pour des informations sur les formats).

Donc, pour une solution Bash pure:

printf '%(%s)T\n' -1

ou si vous avez besoin de stocker le résultat dans une variable var:

printf -v var '%(%s)T' -1

Pas de programmes externes et pas de sous-couches!

Depuis Bash 4.3, il est même possible de ne pas spécifier le -1:

printf -v var '%(%s)T'

(mais il pourrait être plus sage de toujours donner l'argument -1 toutefois).

Si tu utilises -2 comme argument au lieu de -1, Bash utilisera l'heure à laquelle le shell a été démarré au lieu de la date actuelle (mais pourquoi voudriez-vous cela?).


25
2017-11-07 15:23



Ceci est une extension de ce que @pellucide a fait, mais pour Mac:

Déterminer le nombre de secondes écoulées depuis l'époque (1er janvier 1970) pour une date donnée (par exemple, le 21 octobre 1973).

$ date -j -f "%b %d %Y %T" "Oct 21 1973 00:00:00" "+%s"
120034800

Veuillez noter que pour être complet, j'ai ajouté la partie temps au format. La raison d'être est que date prendra toute partie de la date que vous lui avez donné et ajoutera actuel temps à la valeur fournie. Par exemple, si vous exécutez la commande ci-dessus à 16h19, sans la partie '00: 00: 00 ', l'heure sera automatiquement ajoutée. Tel que "Oct 21 1973" sera analysé comme "Oct 21 1973 16:19:00". Ce n'est peut-être pas ce que vous voulez.

Pour convertir votre horodatage en date:

$ date -j -r 120034800
Sun Oct 21 00:00:00 PDT 1973

La page de manuel d'Apple pour l'implémentation de la date: https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/date.1.html


14
2017-08-27 23:28



Avec la plupart des implémentations Awk:

awk 'BEGIN {srand(); print srand()}'

8
2017-12-25 21:58



utilisez ce script bash (mon ~/bin/epoch):

#!/bin/bash

# get seconds since epoch
test "x$1" == x && date +%s && exit 0

# or convert epoch seconds to date format (see "man date" for options)
EPOCH="$1"
shift
date -d @"$EPOCH" "$@"

0
2018-05-12 15:50