如何在unix中根据给定的日期获取工作日

cpjpxq1n  于 2022-11-04  发布在  Unix
关注(0)|答案(6)|浏览(153)

根据%m-%d-%Y的给定日期,我们应该确定它是哪一天。
示例:对于日期09-01-2017,输出应为Friday

lqfhib0f

lqfhib0f1#

非常简单。只要使用date命令本身和正确的选项。

$ date -j -f '%m-%d-%Y' "09-01-2017" +'%A'
Friday
irlmq6kh

irlmq6kh2#

如果你有这样的约会:

d="09-01-2017"

您需要将其重新格式化为“YYYY-MM-DD”

date -d $(echo $d|awk -F- '{print $3 "-" $1 "-" $2}') +%A # DOW
ylamdve6

ylamdve63#

这是我通常做的。我会使用日期函数。你可以做“男人日期”并找到选项。

$ d=2020-08-20 \
$ date -d "$d" +%u \
4 \
$ date -d "$d" +%A \
Thursday
ffscu2ro

ffscu2ro4#

DayOfWeek=$(date +%A)

这将生成星期几monday-sunday。如果输入日期的格式严格为MM-DD-YYYY,请使用以下格式

IFS='-' read -ra ADDR <<< "09-01-2017"
formattedDate=${ADDR[2]}-${ADDR[0]}-${ADDR[1]}
date -d  $formattedDate +%A

第一行标记日期的组成部分,第二行重新排列它们

mm9b1k5b

mm9b1k5b5#

您可以将其作为%m/%d%Y传递,这会被date命令识别。

$ date --date="`echo 09-01-2017| sed -e 's/-/\//g' `" +'%A'
Friday

要验证它,请传递%F以获取ISO格式的文件

$ date --date="`echo 09-01-2017| sed -e 's/-/\//g' `" +'%A %F'
Friday 2017-09-01
wribegjk

wribegjk6#

date +%A

# let us see in a for loop

for i in {1..7}; do date +%A --date=+${i}day; done

Wednesday
Thursday
Friday
Saturday
Sunday
Monday
Tuesday

相关问题