La question connexe est "Horodatage Datetime To Unix" , mais cette question est plus générale.
J'ai besoin d'horodatages Unix pour résoudre ma dernière question. Mes intérêts sont Python, Ruby et Haskell, mais d'autres approches sont les bienvenues.
Quelle est la façon la plus simple de générer des horodatages Unix?
unix
unix-timestamp
Léo Léopold Hertz 준영
la source
la source
gettimeofday
est le nom de l'appel système POSIX et Linux: stackoverflow.com/questions/11765301/… TODO: pourquoistrace date +%d
ne pas l'appeler?Réponses:
Sous Linux ou MacOS, vous pouvez utiliser:
où
+%s
, secondes depuis le 01-01-1970 00:00:00 UTC. (Manuel de date GNU Coreutils 8.24)Exemple de sortie maintenant 1454000043.
la source
date
est normalement défini dans POSIX.2./usr/bin/date +%s and
/ usr / xpg4 / bin / date +% s` fonctionnant. Combiné avec la recommandation POSIX.2, je pense que cela fonctionne aussi sur tous les Solaris.date -v+60S +%s
pour ajouter 1 jour:date -v+24H +%s
et ainsi de suite. . .en Ruby:
la source
Time.zone.now.to_i
. Bien que cela donne le même o / p queTime.now.to)_i
maisTime.zone.now.to_i
c'est leRails
chemin../bin/rails runner "p Time.current.to_i"
c'est une autre solution.En python, ajoutez les lignes suivantes pour obtenir un horodatage:
la source
curl icanhazepoch.com
Fondamentalement, ce sont les horodatages Unix en tant que service (UTaaS)
la source
curl -L -H "Accept: application/json" unixtimesta.mp
vous donnera{"datetime":"Thu, 19 Jul 2018 12:01:21 GMT","timestamp":1532001681}
En Perl:
la source
La commande unix 'date' est étonnamment polyvalente.
Prend la sortie de
date
, qui sera au format défini par -f, puis l'imprime (-j dit de ne pas tenter de définir la date) sous la forme +% s, secondes depuis epoch.la source
date: invalid option -- 'j'
où (manuel de date GNU Coreutils 8.24)
+%s
, secondes depuis le 1970-01-01 00:00:00 UTC+%N
, nanosecondes (000000000..999999999) depuis l'époqueExemple de sortie maintenant
1454000043.704350695
. J'ai remarqué que le manuel BSDdate
ne comprenait pas d'explication précise sur le drapeau+%s
.la source
+$N
? Est-il inclus dans l'horodatage UNIX dans certains systèmes?%N
la page de manuel de date n'est pas documentée dans macOS 10.13.1 (High Sierra) et ne fonctionne pas. L'exemple de sortie je suis arrivé est:1523342391.N
.gdate
dans Homebrew apple.stackexchange.com/a/135749/181223Tout d'abord, `` l'époque '' ou l'heure zéro Unix est 1970-01-01 00: 00: 00Z (ce qui signifie minuit du 1er janvier 1970 dans le fuseau horaire zoulou ou GMT ou UTC). Un horodatage Unix est le nombre de secondes écoulées depuis ce temps - sans tenir compte des secondes intercalaires.
Générer l'heure actuelle en Perl est assez simple:
La génération de l'heure correspondant à une valeur date / heure donnée est plutôt moins aisée. Logiquement, vous utilisez la
strptime()
fonction de POSIX. Cependant, le module Perl POSIX :: strptime (qui est distinct du module POSIX) a la signature:La fonction
mktime
du module POSIX a la signature:Donc, si vous connaissez le format de vos données, vous pouvez écrire une variante sur:
la source
Pour être complet, PHP:
En BASH:
la source
date
commande, donc je ne pense pas qu'il soit nécessaire d'appeler php à partir de là.à Haskell
à Go
en C
à Swift
la source
À Haskell ...
Pour le récupérer en tant que type POSIXTime:
En entier:
la source
la source
Essayons JavaScript :
... ou encore mieux, l'approche statique:
Dans les deux cas, je divise par
1000
pour passer des secondes aux millis et jeMath.floor
ne représente que des secondes entières qui se sont écoulées (par rapport à l'arrondi, qui peut arrondir à une seconde entière qui ne s'est pas encore écoulée).la source
milliseconds
ne retournent pas des secondes et l'horodatage Unix est le nombre de cellesseconds
qui se sont écoulées depuis le 1er janvier 1970 à 00h00 UTC. Vous pouvez utiliser JS, divisez simplement par 1000 et arrondissez:Math.round(Date.now()/1000)
Math.floor
place deMath.round
. AcclamationsSi vous avez besoin d'un horodatage Unix à partir d'un script shell (famille Bourne: sh, ksh, bash, zsh, ...), cela devrait fonctionner sur n'importe quelle machine Unix contrairement aux autres suggestions (perl, haskell, ruby, python, GNU date ), il est basé sur une commande et une fonctionnalité standard POSIX.
la source
Dans Bash 5, il y a une nouvelle variable:
Ou si vous souhaitez une précision plus élevée (en microsecondes):
la source
Si je veux imprimer l'heure de la date utc en utilisant la commande date, je dois utiliser l'argument -u avec la commande date.
Exemple
Production
la source
nawk:
la source
Avec NodeJS, ouvrez simplement un terminal et tapez:
node -e "console.log(new Date().getTime())"
ounode -e "console.log(Date.now())"
la source