【问题标题】:Compare given date to today's date in shell将给定日期与 shell 中的今天日期进行比较
【发布时间】:2018-09-25 15:45:55
【问题描述】:

我想比较给定的日期

date1=2018 年 8 月 1 日星期三 10:03:52 EDT

shell 中的今天“日期”命令。

如果给定日期早于今天日期的 7 天,则回显 true

【问题讨论】:

    标签: shell date compare


    【解决方案1】:

    在 GNU 日期中,您可以使用 date -d "$date1" +%s 解析日期字符串并将其转换为自 1970-01-01 00:00:00 UTC 以来的秒数。

    您可以将其与date +%s 的结果进行比较,后者将以相同的格式为您提供当前日期。

    【讨论】:

      【解决方案2】:

      如果是标准date 格式:

      date1="Tue Sep 25 11:32:09 EDT 2018"
      
      now=$(date +%s)
      cond=$(( $(date -d "$date1" +%s) + 7*24*60*60 ))
      
      if [ $now -ge $cond ]
      then
          echo True
      fi
      

      如果问题中出现新的无法识别的格式 (date1=Wed 01 Aug 10:03:52 EDT 2018),您可以将日期和月份替换为:

      date1="Wed 01 Aug 10:03:52 EDT 2018"
      date1=$(echo $date1 | sed -E 's/(Sun|Mon|Tue|Wed|Thu|Fri|Sat).([0-9]{2}).(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)/\1 \3 \2/')
      

      其他都一样

      如果是其他任意格式,您必须使用正则表达式解开它并转换为something date can recognize.

      +%s 以秒为单位格式化输出。

      -d DATE 使用指定的日期字符串而不是当前时间。

      sed 匹配一个正则表达式并替换它

      【讨论】:

      • 如果您能更新您的答案,请更新我的问题。
      猜你喜欢
      • 2014-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-08
      • 2019-03-12
      • 1970-01-01
      • 1970-01-01
      • 2012-05-10
      相关资源
      最近更新 更多