получите полную дату определенного дня текущей недели с датой GNU

#linux #date #gnu

Вопрос:

Есть ли способ узнать дату пятницы текущей недели независимо от того, будет ли она в будущем или в прошлом с текущего дня ?

Например, сегодня 2021-07-10 пятница текущей недели, поэтому она была бы один день назад. Но если бы сегодня была 2021-07-05 пятница, то на текущей неделе было бы четыре дня в будущем.

Я знаю, что с date помощью утилиты вы можете получить либо в прошлую пятницу, либо в ближайшую пятницу с :

date --date="last Friday" и date --date="next Friday"

есть ли способ узнать дату пятницы на текущей неделе без сложной логики ?

Комментарии:

1. date --date="Friday" ?

2. это, к сожалению, совпадает с датой —дата=»следующая пятница». он возвращает наступающую пятницу, которая будет на следующей неделе, а не на текущей.

Ответ №1:

Единственный способ, которым я знаю, как сделать то, что вы хотите, — это сделать что-то вроде следующего

 date -d "next monday - $(($(date  %u) -1)) days"
 

Конечно, есть побочные вопросы, такие как день начала рабочей недели (он варьируется) и т. Д.

Вот простой скрипт для распечатки дат на неделю:

 #!/bin/bash

for DAY in monday tuesday wednesday thursday friday saturday sunday
do
   # date -d "next $DAY - $(($(date  %u) - 1)) days"
   date -d "next $DAY - $(date  %u) days
done
 

Он выдает следующий результат на основе сегодняшней даты:

 Mon Jul  5 12:00:00 AM PST 2021
Tue Jul  6 12:00:00 AM PST 2021
Wed Jul  7 12:00:00 AM PST 2021
Thu Jul  8 12:00:00 AM PST 2021
Fri Jul  9 12:00:00 AM PST 2021
Sat Jul 10 12:00:00 AM PST 2021
Sun Jul 11 12:00:00 AM PST 2021