2009-07-07 22 views
47

Come ottenere il valore di data corrente in epoca, ovvero il numero di giorni trascorsi dal 1970-1-1. Ho bisogno di una soluzione nello script di shell unix.Ottieni data corrente in epoca dallo script di shell Unix

+0

Che dipende da t lui linguaggio Quale lingua usi? – Stephan202

+0

Che lingua o tecnologia stai usando? –

+0

Sto usando unix. Ho bisogno di questo per usare uno script di shell ... –

risposta

24

Aggiornamento: La risposta precedentemente postato qui legato a uno script personalizzato che non è più disponibile, unicamente perché l'OP ha indicato che date +'%s' non ha funzionato per lui. Si prega di vedere UberAlex' answer e cadrian's answer per soluzioni appropriate. In breve:

  1. Per il numero di secondi poiché l'uso Unix epoch date(1) come segue:

    date +'%s' 
    
  2. Per il numero di giorni dall'epoch Unix dividere il risultato per il numero di secondi in un giorno (attenzione alle doppie parentesi!):

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

Funziona ... grazie mille. –

+0

Prego :) – Stephan202

+0

FYI: ** link non funzionanti ** – Soren

-4

A seconda della lingua che si sta usando sta per essere qualcosa di semplice come

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

Ironia della sorte, ieri è stato il giorno 40.000 se si utilizza 1/1/1900 come "giorno zero", come molti sistemi informatici uso.

+0

Che sembra VB per me La domanda si pone in relazione a uno script di shell Unix – Noldorin

+0

Ha modificato dopo aver risposto. Grazie per l'input comunque – mandroid

+2

Perché è ironico? – jameshfisher

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

+1 Dovrebbe funzionare sulla maggior parte dei gusci di bourne e su unixes – nos

+2

Nota che '% s' è un'estensione.La data POSIX non ha '% s'. Vedi http://pubs.opengroup.org/onlinepubs/9699919799/utilities/date.html per i dettagli. – Jens

+1

Non tutti i giorni hanno 86400 (60 * 60 * 24) secondi (ora legale, secondi bisestili, ecc ...) –

127
comando date

L'Unix visualizzerà in tempo nell'epoca

il comando è

date +"%s" 

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

Edit: Alcune persone hanno osservato che hai chiesto per giorni, quindi è il risultato di tale comando diviso 86.400

+6

Nota che '% s' è un'estensione. La data POSIX non ha '% s'. Vedi http://pubs.opengroup.org/onlinepubs/9699919799/utilities/date.html per i dettagli. – Jens

+1

Non tutti i giorni hanno 86400 secondi (ora legale, secondi bisestili, ecc ...) –

+5

Ancora una volta, nell'ora unix (data +% s) ogni giorno ha 86400 "secondi", non include i secondi bisestili e certamente non l'ora legale. La risposta è corretta –

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

Non tutti i giorni hanno 86400 secondi (ora legale, secondi bisestili, ecc ...) –

+5

ma ogni "unix day" ha 86400 secondi –

Problemi correlati