Obtenez lundi et dimanche, etc. pendant une semaine pour toute date en paramètre dans Unix

Comment obtenir la date du lundi et du dimanche dans une semaine pour une date?

Cela donne la date pour ‘dernier’ lundi:

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

Je veux passer une date en paramètre pour trouver le lundi et le dimanche de cette semaine. Fondamentalement, je veux avoir le dimanche et le lundi pour une semaine, pour n’importe quelle date, PAS seulement pour lundi dernier .

Essaye ça:

 export day=2013-10-01 date -d "$day -$(date -d $day +%w) days" 

Cela imprimera toujours le dimanche avant la date donnée (ou la date elle-même).

 date -d "$day -$(date -d $day +%u) days" 

Cela imprimera toujours le dimanche avant la date donnée (et jamais la date elle-même).

Pour les lundis il faut append + 1 day :

 date -d "$day -$(date -d $day +%u) days + 1 day" 

Vous devriez également considérer ce que vous voulez obtenir le lundi ou le dimanche (ce qui n’était pas tout à fait clair) pour quelle date. Cela dépend également si vous considérez le dimanche le premier ou le dernier jour de la semaine.

date peut parsingr la date sur la ligne de commande comme suit:

 date -j -f %s 1380628152 

qui est la date + heure en secondes depuis l’époque UNIX. Vous pouvez combiner la commande avec votre commande. Le -j signifie que vous ne voulez pas définir la date. Le paramètre -f spécifie une chaîne strftime à utiliser pour parsingr la date sur la ligne de commande.

Veuillez noter que ceci est sur un système BSD et il semble que vous soyez sur un système GNU avec différentes options à ce jour (mais il doit prendre en charge quelque chose de similaire).