Shell脚本,获取各种日期[全]

旧城等待, 2024-03-17 12:35 131阅读 0赞

文章目录

  • 前言
  • 一、日期
    • 1、获取前一天
    • 2、获取上个月的第一天和最后一天
    • 3、日期循环
  • 总结

前言

常用shell脚本, 不定时更新


一、日期

1、获取前一天

  1. DATE=$(date -d "-1 day" +"%Y%m%d")
  2. echo "<$DATE>"

<20230707>

2、获取上个月的第一天和最后一天

  • !/bin/bash

    DATE=$(date -d “-1 day” +”%Y%m%d”)

    不使用date -d

    yy=date +%Y
    mm=date +%m-1|bc

    [ $mm -lt 1 ] && {

    1. mm=12; ((yy -= 1)); }

    [ $mm -le 9 ] && mm=”0$mm”
    DATE=$(date -d “-1 day” +”%Y%m%d”)

    不使用date -d

    yy=date +%Y
    mm=date +%m-1|bc

    [ $mm -lt 1 ] && {

    1. mm=12; ((yy -= 1)); }

    [ $mm -le 9 ] && mm=”0$mm”
    getcal=cal $mm $yy
    last_dd=echo $getcal|awk '{print $NF}'
    dd1=echo $getcal|awk '{print $10}'

    first_dd=”0$dd1”

    FirstDay=$yy$mm$first_dd
    LastDay=$yy$mm$last_dd

    echo $FirstDay
    echo $LastDay

20230601
20230630

  • 获取上个月第一天

    first_day=$(date -d “$(date +%Y-%m-01) -1 month” +%Y-%m-%d)

    获取上个月最后一天

    last_day=$(date -d “$(date +%Y-%m-01) -1 day” +%Y-%m-%d)

    echo “上个月第一天:$first_day”
    echo “上个月最后一天:$last_day”

这里使用了date命令的-d参数来指定日期,并通过+%Y-%m-%d格式化选项将日期转换为yyyy-mm-dd的格式。首先,我们获取当前月份的第一天,然后减去一个月,得到上个月的第一天。接着,我们再次获取当前月份的第一天,然后减去一天,得到上个月的最后一天。

运行以上代码,你将会得到类似以下输出:

  1. 上个月第一天:2022-03-01
  2. 上个月最后一天:2022-03-31

3、日期循环

  1. # 这里的例子每天作为循环,并展示当天的前一天
  2. startDate=20230601
  3. endDate=20230630
  4. startSec=`date -d "$startDate" "+%s"`
  5. endSec=`date -d "$endDate" "+%s"`
  6. for((i=$startSec;i<=$endSec;i+=86400))
  7. do
  8. current_day=`date -d "@$i" "+%Y%m%d"`
  9. one_day_ago=`date -d "$current_day yesterday" +%Y%m%d`
  10. echo "current_day:${current_day}, yesterday:${one_day_ago}"
  11. done

current_day:20230601, yesterday:20230531
current_day:20230602, yesterday:20230601
current_day:20230603, yesterday:20230602
current_day:20230604, yesterday:20230603
current_day:20230605, yesterday:20230604
current_day:20230606, yesterday:20230605
current_day:20230607, yesterday:20230606
current_day:20230608, yesterday:20230607
current_day:20230609, yesterday:20230608
current_day:20230610, yesterday:20230609
current_day:20230611, yesterday:20230610
current_day:20230612, yesterday:20230611
current_day:20230613, yesterday:20230612
current_day:20230614, yesterday:20230613
current_day:20230615, yesterday:20230614
current_day:20230616, yesterday:20230615
current_day:20230617, yesterday:20230616
current_day:20230618, yesterday:20230617
current_day:20230619, yesterday:20230618
current_day:20230620, yesterday:20230619
current_day:20230621, yesterday:20230620
current_day:20230622, yesterday:20230621
current_day:20230623, yesterday:20230622
current_day:20230624, yesterday:20230623
current_day:20230625, yesterday:20230624
current_day:20230626, yesterday:20230625
current_day:20230627, yesterday:20230626
current_day:20230628, yesterday:20230627
current_day:20230629, yesterday:20230628
current_day:20230630, yesterday:20230629


总结

如果此篇文章有帮助到您, 希望打大佬们能关注点赞收藏评论支持一波,非常感谢大家!
如果有不对的地方请指正!!!

发表评论

表情:
评论列表 (有 0 条评论,131人围观)

还没有评论,来说两句吧...

相关阅读

    相关 自动清除日期目录shell脚本

        很多时候备份通常会使用到基于日期来创建文件夹,对于这些日期文件夹下面又有很多子文件夹,对于这些日期文件整个移除,通过find结合rm或者delete显得有些力不从心。本