#!/bin/bash
ctime=
日期+%s# returns 1618634997 to $ctime
stime=$(wget --server-response --spider http://www.server.org/news_32.mp3 2>&1 | grep -i Last-Modified)
# returns : Last-Modified: Sat, 17 Apr 2021 04:49:57 GMT
# into the variable $stime
我需要将$stime
转换为epoch时间,将其放在$etime
中进行比较,然后决定是否下载文件。
需要一些代码来操作字符串。
进行日期比较
diff=$(( (ctime - eftime) / 86400 ))
echo $diff
返回以天为单位的差异。
我的解决方案,在多次尝试分解原始字符串后找到
stime=$(wget --server-response --spider http://server.org.au/local.mp3 2>&1 | grep -i Last-Modified)
a=$stime
a=${a/*,/} ; a=${a/ GMT/} ; dmt=${a/2021 /} ; dm=${a/2021*/} ; tm=${dmt/????????/} ; dd=${dm%?????*} ; mmm=${dm#*????}
fst="${mmm}${dd} ${tm}"
epoch=$(date -d "${fst}" +"%s")
echo "server file time = $fst"
ftime=$epoch
ctime=
日期+%s``
diff=$(( (ctime - ftime) / 86400 ))
echo "age "$diff" days"
exit
非常尴尬,我知道:(感谢您的回答,这是本网站的新手,现在尝试简单的方法。
尝试以下操作:
eftime=$(date -d "$(wget --server-response --spider http://www.server.org/news_32.mp3 2>&1 | awk -F: '/Last-Modified/ { print $2 }')" +%s)
diff=$(( (ctime - eftime) / 86400 ))
echo $diff
说明:
wget --server-response --spider http://www.server.org/news_32.mp3 2>&1 | awk -F: '/Last-Modified/ { print $2 }'
取wget的输出,然后用";最后修改的";并打印第二个":"分隔字段。将其用作日期描述符,并使用+%s以epoch格式打印。
两者都可以使用日期
获取epoch秒并使用…将其转换回正常日期。。。
date --date="@$(date +%s)"
如果你喜欢Lua,那么你可以做…
-- get epoch seconds
>os.time()
1619002966
-- Convert it to a date
>os.date(_,os.time())
Wed Apr 21 13:03:11 2021