我正在使用一个Bash脚本(使用Cygwin),该脚本使用cURL来抓取网页并检查某个日期值。我的cURL和grep调用导致以下行:
<span style="float:right">Last Update: 9/30/2011 3:16:31 AM</span><p>
我需要对日期做的是检查它是否在最近n天内。处理此问题的最佳方法是什么,我应该如何解析日期?
答案 0 :(得分:2)
类似的东西:
DATESTRING="$(sed -e 's/.*Last Update: \([^<]*\)<.*/\1/' $MYINPUT)"
UPDATE=$(date -d "$DATESTRING" +%s)
EPOCH=$(date -d "-$n days" +%s)
test "$UPDATE" -ge "$EPOCH" && echo "It's new!"
答案 1 :(得分:1)
'date'程序应该能够解析该日期格式。例如:
% date -d '9/30/2011 3:16:31 AM'
Fri Sep 30 03:16:31 PDT 2011
因此,您可以使用'date'将其转换为bash中可用的内容(整数,自纪元以来的秒数):
parseddate=$(something that extracts just the date from the line ...)
date -d "$parseddate" +%s
然后将其与
的结果进行比较date -d '3 days ago' +%s
答案 2 :(得分:0)
我想说绝对最好的方法是使用另一种语言解析它,例如Perl,因为解析日期会更容易。如果您更愿意使用Bash,请查看--date
中的man date
选项。