Shell获取指定日期对应的周几

您所在的位置:网站首页 linux查看日期是星期几 Shell获取指定日期对应的周几

Shell获取指定日期对应的周几

2024-01-21 09:12| 来源: 网络整理| 查看: 265

  shell操作日期时,经常会遇到获取某一日期所对应的本周的周几,以获取对应的本周周六为例,那如果获取本周周六的日期,是比较简单的,有直接的函数搞定,具体shell脚本如下:

CURRENT_SAT_DATE_WITH_MINUS=`date -d "saturday" "+%Y%m%d"`

  但是有的时候为了实现动态化程序的处理,可能这个日期不一定是当前日期,是个变化的参数日期,那要获取这个动态参数日期对应的本周周几怎么办呢?我找了下现成的函数,都没搞定,于是就走点弯路吧,突然想起以前写日历的算法,自己写了一个小算法,以获取本周六为例,这里先普及一个概念:时间戳:时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总毫秒数。   具体代码如下get_sat.sh:

#! /bin/bash EVENT_DAY=$1 #定义随意的一天的参数 MONDAY='19000205' #指定是周一的日期,小一点比较好,因为正常使用的日期都比这个大,确保后面面stampDiff=`expr $endDate - $startDate`为正数 startDate=`date -d ${MONDAY} +%s` #计算周一的时间戳 echo "startDate:$startDate" endDate=`date -d ${EVENT_DAY} +%s` #计算任意一天的时间戳 echo "endDate:$endDate" stampDiff=`expr $endDate - $startDate` #得到任意一天和周一时间戳的相差值 weekDiff=`expr $[stampDiff/604800]` #604800=60*60*24*7 即一周的时间戳总和,两者差值时间戳除以604800取整数得到随意时间和周一19000205相差的周数 echo "weekDiff:$weekDiff" n_end=$(($weekDiff*7)) #得到随意时间和周一19000205相差的天数,那么周一19000205加上相差的天数刚好得到随意时间对应的本周周一 n_end=$[`expr $n_end + 5`] #因为是周六,那么再加5天,要获取其他时间依情况更换加的天数 echo "n_end : $n_end" THIS_SAT_DAY=$(date -d "$MONDAY +${n_end} days" +%Y%m%d) #那么原来的周一19000205加上相差的总天数得到随意时间对应的本周六 echo "THIS_SAT_DAY:$THIS_SAT_DAY" #输出结果

  调用和运行如下:

[hadoop@shucang-10 sakura]$ ./get_sat.sh 20200402 startDate:-2205993943 endDate:1585756800 weekDiff:6269 n_end : 43888 THIS_SAT_DAY:20200404


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3