#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