2010-05-19 2 views
6

Esiste un modo per calcolare un timestamp per il prossimo giorno di inizio settimana?"Questo venerdì" in script bash

Così ad esempio, con venerdì, mi piacerebbe essere in grado di eseguire un codice che calcola quello da oggi mercoledì 19/05/10, il venerdì prossimo sarà il 21/05/10 e ottenere un timestamp da esso.

So che il comando date in grado di analizzare una determinata data stringa in base al formato, ma non riesco a capire come calcolare "il prossimo venerdì a partire da oggi"

Qualche idea?

EDIT: Sono su un Mac

risposta

11

con data GNU:

date -d 'this Friday' '+%d/%m/%y' 

Vedi Relative items in date strings, parte della data GNU documentatoin. Ci sono anche examples.

+0

Se tale comando viene eseguito su Sat/Sun, restituirà la data di questa settimana o la data della prossima settimana? –

+0

@DJ, penso che ritorni sempre oggi o in un giorno futuro, entro 7 giorni dall'inizio di oggi. Per me, è attualmente Wed. il 19, quindi "questo martedì" dà Tue. il 25. Un punto interessante è che "questo mercoledì" dà il 19, mentre "il prossimo mercoledì" è il 26. –

+0

La prossima settimana. Secondo i documenti "date", "questo" equivale a non specificare nulla, quindi si verifica il prossimo venerdì che si verifica. – porges

1

Dal momento che è stato specificato alcun formato, è molto più semplice:

date -d Fri 

'questo' è assunto pari di default, Venerdì può essere abbreviato. Dal momento che è solo una parola - o il significativo resto, (chiedere Th) che non ha bisogno di citazioni come

date -d "last Fri" 

avrebbe fatto.

+0

Arriva tardi al combattimento .. – Ben

+0

Sì, ma era collegato sul lato destro, quando si lavorava a una domanda reale (circa il venerdì prima di una data casuale), così ho pensato: visita questo link - la maggior parte delle persone sottovaluta il potere di 'date'. –

+0

Certo, ti darò un punto per il tuo immutabile apprezzamento del potere della data – Ben