linux中怎么获取指定日期所在的周一

善若止水 2018-05-11 08:50:13
比如BATCH_DATE='20180511',怎么获取所在的周的周一?
我所知道的是,date -d "next monday" +%Y%m%d ---下周一日期
但怎么将两者结合在一起,我就不明白了,希望多多指导
...全文
2244 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
骏马金龙 2018-05-12
  • 打赏
  • 举报
回复
[root@node1 ~]# src_date='2018-05-12'      # 给一个日期
[root@node1 ~]# src_weekday=`date -d $src_date +%w`   # 计算这个日期是周几(数字表示)
[root@node1 ~]# echo $src_weekday      # 6表示周六
6
[root@node1 ~]# date -d "$src_date - $((src_weekday - 1)) days" +%F  # 计算给定日期减去一定数量的天数
2018-05-07
[root@node1 ~]# date -d "$src_date   $((src_weekday - 1)) days ago" +%F  # 或者
2018-05-07
善若止水 2018-05-12
  • 打赏
  • 举报
回复
用的很笨的方法, 好在解决了,如有更好的可以提供下 BATCH_DATE='20180506' #输入日期 INIT_DAY='20180423' #定义一个初始化的周一的日期 startDate=`date -d ${INIT_DAY} +%s` #初始化日期所对毫秒数 endDate=`date -d ${BATCH_DATE} +%s` #输入日期所对毫秒数 stampDiff=`expr $endDate - $startDate` #两者之间相差的毫秒数 weekDiff=`expr $stampDiff / 604800` #两者之间相差的周数 n_end=$(($weekDiff*7)) #两者之间相差的天数 STR_WEEK_LAST_DAY=$(date -d "$INIT_DAY +${n_end} days" +%Y%m%d) #初始化日期加上相差天数就是所对的周一 echo $STR_WEEK_LAST_DAY
X-i-n 2018-05-12
  • 打赏
  • 举报
回复
试了下,这个也行。
date -d "last monday" +%Y%m%d
X-i-n 2018-05-12
  • 打赏
  • 举报
回复
date -d "monday 7 days ago" +%Y%m%d
善若止水 2018-05-11
  • 打赏
  • 举报
回复
%w : 一周中的第几天 (0..6) %W : 一年中的第几周 (00..53) (以 Monday 为一周的第一天的情形)
善若止水 2018-05-11
  • 打赏
  • 举报
回复
[root@hadoop ~]# date +%w 5 [root@hadoop ~]# date Fri May 4 15:07:25 CST 2018 [root@hadoop ~]# date +%w 5 [root@hadoop ~]# date +%W 18 感觉和这个有关,但不知道具体该怎么整

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧