web-dev-qa-db-fra.com

Date d'impression pour le lundi de la semaine en cours (en bash)

Je souhaite obtenir une date au format 'AAAAMMJJ' (par exemple, aujourd'hui, elle serait 20110627) pour le lundi de la semaine en cours. De demain à dimanche, j'aimerais imprimer la date du lundi (aujourd'hui). Puis la semaine prochaine, répétez le processus

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.

si une plage est ce que votre après vous pouvez avoir besoin de faire quelques choses

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

qui produirait:

20110628-20110703

Plus sur les dates

notez que cela ne fonctionne que le GNU date

J'ai lu ça:

Version Solaris de date, qui est incapable pour supporter -d peut être résolu avec remplacement de la version sunfreeware.com de rendez-vous amoureux

57
matchew

Pour ceux d’entre nous qui n'ont pas GNU dates

Vous pouvez alors faire ceci:

# 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

Cela semble également ne pas être un problème si nous sommes lundi aujourd'hui, dans mon cas actuel jeudi

# 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

Essayez ceci pour obtenir la date du lundi en cours.

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

Je pense que cela répond réellement à ce qui était demandé:

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