将服务器时间戳转换为变量中的epoch



#!/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

最新更新