📜  linux 中最后一个 Friedy 的日期 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:32:40.850000             🧑  作者: Mango

Linux 中最后一个 Friday 的日期 - Shell-Bash

在 Linux 中,我们可以使用 Shell 脚本来获取某个日期之前或之后的最后一个星期五的日期。这个功能在计算金融、股票等领域非常常见。

实现思路

思路很简单,我们首先获取当前月份的最后一天的日期,然后判断这个日期是不是星期五,如果不是的话,就不断往前推日期直到找到最后一个星期五。

Shell-Bash 代码
#!/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
代码解释
  1. 第 3 行:使用 date 命令来获取当前月份的第一天的日期(如:2021-05-01),然后加上一个月再减去一天,就得到了当前月份的最后一天的日期。

  2. 第 6 行:使用 date 命令来获取最后一天的星期几,其中 %u 表示星期几,星期一到星期日对应的数字分别是 1 到 7。

  3. 第 7~9 行:如果最后一天是星期五,则直接输出日期并结束程序;否则,就继续向前推日期直到找到最后一个星期五。

  4. 第 11~17 行:使用 while 循环来不断推日期,直到找到最后一个星期五。首先将最后一天往前推一天,然后再次获取这一天的星期几。如果不是星期五,就继续推日期;否则,就输出日期并结束程序。

总结

本文介绍了如何使用 Shell-Bash 脚本来获取 Linux 中最后一个星期五的日期。本问题的解决方法可以应用于金融、股票等领域,希望对您有所帮助。