📅  最后修改于: 2023-12-03 15:32:40.850000             🧑  作者: Mango
在 Linux 中,我们可以使用 Shell 脚本来获取某个日期之前或之后的最后一个星期五的日期。这个功能在计算金融、股票等领域非常常见。
思路很简单,我们首先获取当前月份的最后一天的日期,然后判断这个日期是不是星期五,如果不是的话,就不断往前推日期直到找到最后一个星期五。
#!/bin/bash
# 获取当前月份的最后一天的日期
last_day=$(date -d "$(date +%Y-%m-01) +1 month -1 day" +%Y-%m-%d)
# 判断最后一天是不是星期五
day_of_week=$(date -d $last_day +%u)
if [ $day_of_week -eq 5 ]; then
echo "本月最后一个星期五的日期为:$last_day"
else
# 往前推日期直到找到最后一个星期五
while [ $day_of_week -ne 5 ]; do
last_day=$(date -d "$last_day -1 day" +%Y-%m-%d)
day_of_week=$(date -d $last_day +%u)
done
echo "本月最后一个星期五的日期为:$last_day"
fi
第 3 行:使用 date
命令来获取当前月份的第一天的日期(如:2021-05-01),然后加上一个月再减去一天,就得到了当前月份的最后一天的日期。
第 6 行:使用 date
命令来获取最后一天的星期几,其中 %u
表示星期几,星期一到星期日对应的数字分别是 1 到 7。
第 7~9 行:如果最后一天是星期五,则直接输出日期并结束程序;否则,就继续向前推日期直到找到最后一个星期五。
第 11~17 行:使用 while
循环来不断推日期,直到找到最后一个星期五。首先将最后一天往前推一天,然后再次获取这一天的星期几。如果不是星期五,就继续推日期;否则,就输出日期并结束程序。
本文介绍了如何使用 Shell-Bash 脚本来获取 Linux 中最后一个星期五的日期。本问题的解决方法可以应用于金融、股票等领域,希望对您有所帮助。