risposta-alla-domanda-sullo-sviluppo-web-bd.com

Stampa la data per il lunedì della settimana corrente (in bash)

Voglio ottenere una data nel formato 'YYYYMMdd' (ad esempio, oggi sarebbe 20110627) per il lunedì della settimana corrente. Da domani a domenica vorrei stampare ancora la data del lunedì (oggi). Quindi la prossima settimana, ripetere il processo

28
vehomzzz
#monday
date -dmonday +%Y%m%d

#last monday
date -dlast-monday +%Y%m%d

#next monday
date -dnext-monday +%Y%m%d

#two mondays from now
date -d'monday+14 days' +%Y%m%d

#two mondays ago
date -d'monday-14 days' +%Y%m%d

#although, if you fancy yourself an Abraham Lincolin
date -d'monday-fortnight ago' +%Y%m%d #2 weeks ago
date -d'monday+fortnight' +%Y%m%d #2 weeks from now

#Monday Next Year
date -d'52+monday' +%Y%m%d

#However, Monday Last Year
date -d'52-monday' +%Y%m%d  #DOES NOT  WORK




#you can try a day other than monday
#and format this differently.

se un intervallo è ciò che il tuo dopo potrebbe essere necessario fare alcune cose

#Tuesday to Sunday
#since today is monday, I'll use Tuesday
echo `date -dtuesday +%Y%m%d-``date -dnext-sunday +%Y%m%d`

che produrrebbe:

20110628-20110703

Altro su Date

nota che funziona solo su GNU date

Ho letto che:

La data della versione di Solaris, che non supporta Per supportare -d può essere risolta con Sostituendo la versione sunfreeware.com della data

57
matchew

Per quelli di noi senza GNU date (come noi OS Xers), potremmo avere il parametro "-v"

Puoi quindi fare questo:

# Most recent Monday
date -v -Mon

# Output as of this writing
Mon Jun 24 12:35:48 EDT 2013

date -v -Mon "+%Y%m%d"

# Outputs
20130624

Anche questo sembra non essere un problema se oggi è lunedì, nel mio caso attuale giovedì

# Today's date
date

# Outputs
Thu Jun 27 12:41:39 EDT 2013

# Most recent Thursday
date -v -Thu

# Outputs
Thu Jun 27 12:41:46 EDT 2013
11
Sam Tsai

Prova questo per ottenere la data del lunedì corrente.

wd=`date +%u`; 
let wd=wd-1; 
mon=`date --date="-$wd day" +%Y%m%d`;
8
Femi

Penso che questo in realtà risponda a quanto richiesto:

date -d "next monday - 7 days"
0
stef