更新

更新

嵌入式poky linux,不可ntpdate用。

看起来以下命令都不合适:

# date -s "$(curl -s --head http://google.com | grep '^Date:' | cut -d' ' -f 3-)" 
date: invalid date '08 Mar 2021 13:22:34 GMT'
# date -s "$(curl -s --head http://google.com | grep '^Date:' | cut -d' ' -f 3-6)"
date: invalid date '08 Mar 2021 13:22:34'
#date +"%d %b %Y %H:%M:%S" -s "$(curl -s --head http://google.com | grep '^Date:' | cut -d' ' -f 3-6)"
date: invalid date '08 Mar 2021 13:22:34'

更新

BusyBox 日期仅接受以下日期格式:

@seconds_since_1970
hh:mm[:ss]
[YYYY.]MM.DD-hh:mm[:ss]
YYYY-MM-DD hh:mm[:ss]
[[[[[YY]YY]MM]DD]hh]mm[.ss]

如果-D选项在您使用的 BusyBox 版本中可用,您可以按照建议使用此命令钢铁起子:

busybox date -d '08 Mar 2021 13:22:34' -D '%d %b %Y %H:%M:%S'

答案1

最后我解析了谷歌的时间字符串,将其转换为busybox date友好的格式(YYYY-mm-dd HH:MM:SS)。希望将来有人会发现这很有用。

#!/bin/sh

monthnumber() {
    month=$1
    months="JanFebMarAprMayJunJulAugSepOctNovDec"
    tmp=${months%%$month*}
    month=${#tmp}
    monthnumber=$((month/3+1))
    printf "%02d\n" $monthnumber
}

G_DATE="$(curl -s --head http://google.com | grep '^Date:' | cut -d' ' -f 3-6)"
G_SPLIT=($(echo $G_DATE | tr " "))

BB_DATE="${G_SPLIT[2]}-$(monthnumber ${G_SPLIT[1]})-${G_SPLIT[0]} ${G_SPLIT[3]}"

date -s "$BB_DATE"

monthnumber()函数取自https://stackoverflow.com/a/41385862/9815377

答案2

也许你可以更新 busybox。我得到了 V1.30 并且该命令有效

相关内容