2009-07-07 7 views
47

Comment obtenir la valeur actuelle de la date, c'est-à-dire le nombre de jours écoulés depuis 1970-1-1. J'ai besoin de solution dans un script shell Unix.Get Date actuelle à l'époque du script shell Unix

+0

Cela dépend de t Sa langue Quelle langue utilisez-vous? – Stephan202

+0

Quelle langue ou technologie utilisez-vous? –

+0

J'utilise unix. J'ai besoin de ceci pour utiliser dans un script de coquille ... –

Répondre

24

Mise à jour: La réponse précédemment affichée ici lié à un script personnalisé qui n'est plus disponible, uniquement parce que l'OP a indiqué que date +'%s' ne fonctionnait pas pour lui. S'il vous plaît voir UberAlex' answer et cadrian's answer pour bonnes solutions. En bref:

  1. Pour le nombre de secondes depuis l'époque Unix utilisent date(1) comme suit:

    date +'%s' 
    
  2. Pour le nombre de jours depuis l'époque Unix diviser le résultat par la nombre de secondes dans un jour (attention aux doubles parenthèses!):

    echo $(($(date +%s)/60/60/24)) 
    
+0

Cela fonctionne ... merci beaucoup. –

+0

Vous êtes les bienvenus :) – Stephan202

+0

FYI: ** liens sont rompus ** – Soren

-4

En fonction de la langue que vous utilisez ça va être quelque chose de simple comme

CInt(CDate("1970-1-1") - CDate(Today())) 

Ironie du sort, hier était le jour 40 000 si vous utilisez 1/1/1900 comme « jour zéro » comme beaucoup de systèmes informatiques utilisation.

+0

VB à moi.La question se pose par rapport à un script shell Unix – Noldorin

+0

Il l'a édité après que j'ai répondu.Merci pour votre entrée quand même – mandroid

+2

Pourquoi est-ce ironique? – jameshfisher

10
echo $(($(date +%s)/60/60/24)) 
+0

+1 Devrait fonctionner sur la plupart des shells et unix de bourne – nos

+2

Notez que '% s' est une extension.La date POSIX n'a ​​pas '% s'. Voir http://pubs.opengroup.org/onlinepubs/9699919799/utilities/date.html pour plus de détails. – Jens

+1

Pas tous les jours ont 86400 (60 * 60 * 24) secondes (DST, secondes intercalaires, etc ...) –

127

La commande Unix Date affiche dans le temps d'époque

la commande est

date +"%s" 

http://unixhelp.ed.ac.uk/CGI/man-cgi?date

Edit: Certaines personnes vous ont observé demandé pendant des jours, il est donc le résultat de cette commande divisée par 86 400

+6

Notez que '% s' est une extension. La date POSIX n'a ​​pas '% s'. Voir http://pubs.opengroup.org/onlinepubs/9699919799/utilities/date.html pour plus de détails. – Jens

+1

Tous les jours n'ont pas 86400 secondes (DST, secondes intercalaires, etc ...) –

+5

Encore une fois, à l'heure unix (date +% s) chaque jour a 86400 "secondes", il ne comprend pas les secondes intercalaires et certainement pas DST. La réponse est correcte. –

1
echo `date +%s`/86400 | bc 
+1

Tous les jours n'ont pas 86400 secondes (DST, secondes intercalaires, etc ...) –

+5

mais chaque 'jour unix' a 86400 secondes –

Questions connexes