在Linux中,date
命令是一个非常强大的工具,用于显示和设置系统的日期和时间,它支持多种格式的输入和输出,并且可以用于计算特定日期,如母亲节和父亲节。
date命令基础用法
date
:显示当前日期和时间。
date +FORMAT
:按照指定格式显示日期和时间。
date d "STRING" +FORMAT
:显示由字符串指定的日期和时间。
计算母亲节和父亲节
母亲节(Mother's Day)通常在每年五月的第二个星期日。
父亲节(Father's Day)通常在每年六月的第三个星期日。
示例脚本:计算母亲节和父亲节
#!/bin/bash 获取当前年份 year=$(date +%Y) 计算母亲节(五月的第二个星期日) mothers_day=$(date d "$year0501" +%s) # 获取5月1日的时间戳 first_sunday=$(( (3 $(date d @$mothers_day +%w)) % 7 )) # 计算第一个星期日距离5月1日的天数 second_sunday=$(( first_sunday + 7 )) # 第二个星期日距离5月1日的天数 mothers_day=$(date d "$year05$(( second_sunday + 1 ))" +%Y%m%d) 计算父亲节(六月的第三个星期日) fathers_day=$(date d "$year0601" +%s) # 获取6月1日的时间戳 first_sunday=$(( (3 $(date d @$fathers_day +%w)) % 7 )) # 计算第一个星期日距离6月1日的天数 third_sunday=$(( first_sunday + 14 )) # 第三个星期日距离6月1日的天数 fathers_day=$(date d "$year06$(( third_sunday + 1 ))" +%Y%m%d) echo "母亲节: $mothers_day" echo "父亲节: $fathers_day"
解释
1、获取当前年份:使用date +%Y
获取当前年份。
2、计算母亲节:
获取5月1日的时间戳。
计算第一个星期日距离5月1日的天数。
计算第二个星期日距离5月1日的天数。
根据第二个星期日的天数计算母亲节的日期。
3、计算父亲节:
获取6月1日的时间戳。
计算第一个星期日距离6月1日的天数。
计算第三个星期日距离6月1日的天数。
根据第三个星期日的天数计算父亲节的日期。
运行脚本
将上述脚本保存为holidays.sh
,然后赋予执行权限并运行:
chmod +x holidays.sh ./holidays.sh
这将输出当前年份的母亲节和父亲节的日期。