简体   繁体   English

日期比较格式

[英]Date Comparison in a format

I want to compare dates in a file in shell script with the below format with the current date and return some flag. 我想将以下格式的shell脚本文件中的日期与当前日期进行比较,并返回一些标志。

 Sep 15 2017 11:04AM

 Sep 16 2017 10:07AM

 Sep 19 2017 11:44AM

 Sep 20 2017 10:08AM

 Sep 21 2017 10:03AM

Awk scripting can be used here. 可以在此处使用Awk脚本。

Assuming the file that contains the dates looks like this: 假设包含日期的文件如下所示:

$ cat file1
Sep 15 2017 11:04AM
Sep 16 2017 10:07AM
Sep 19 2017 11:44AM
Sep 20 2017 10:08AM
Sep 21 2017 10:03AM
Oct 02 2017 10:03AM
Oct 05 2017 10:03AM
Oct 07 2017 10:03AM

Use this for GNU date 将其用于GNU日期

cat file1 | xargs -I@ bash -c " \
    seven_days_ago=$(date --date='7 days ago' +%s); \
    input=\$(date --date=\"@\" +%s); \
     if [ \"\$seven_days_ago\" -gt \"\$input\" ]; then \
        echo \"@\"; \
     fi;"

And this for BSD date 这是BSD日期

cat file1 | xargs -I@ bash -c " \
    seven_days_ago=$(date -v-7d +%s); \
    input=\$(date -j -f \"%b %d %Y %R%p\" \"@\" +%s); \
     if [ \"\$seven_days_ago\" -gt \"\$input\" ]; then \
        echo \"@\"; \
     fi;"

Output is the following. 输出如下。 This dropped the date October 05 and 07 which are closer than 7 days. 该日期将日期设置为10月5日和07日,而该日期距离7天还近。

Sep 15 2017 11:04AM
Sep 16 2017 10:07AM
Sep 19 2017 11:44AM
Sep 20 2017 10:08AM
Sep 21 2017 10:03AM
Oct 02 2017 10:03AM

How do you differentiate between GNU date and BSD date? 您如何区分GNU日期和BSD日期?

To check execute: 要检查执行:

$ man date  | tail -n 1
GNU coreutils 8.22 

vs

$ man date | tail -n 1
BSD                             August 16, 2007                            BSD

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM