首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >BusyBox日期:在没有ntpdate的情况下从互联网上检索日期

BusyBox日期:在没有ntpdate的情况下从互联网上检索日期
EN

Unix & Linux用户
提问于 2021-03-08 13:33:32
回答 2查看 496关注 0票数 0

嵌入式poky,没有ntpdate可用。

以下任何命令似乎都不合适:

代码语言:javascript
运行
复制
# date -s "$(curl -s --head http://google.com | grep '^Date:' | cut -d' ' -f 3-)" 
date: invalid date '08 Mar 2021 13:22:34 GMT'
代码语言:javascript
运行
复制
# date -s "$(curl -s --head http://google.com | grep '^Date:' | cut -d' ' -f 3-6)"
date: invalid date '08 Mar 2021 13:22:34'
代码语言:javascript
运行
复制
#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日期只接受下列日期格式:

代码语言:javascript
运行
复制
@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版本中可用,您可以按照斯蒂尔·德里弗的建议使用以下命令:

代码语言:javascript
运行
复制
busybox date -d '08 Mar 2021 13:22:34' -D '%d %b %Y %H:%M:%S'
EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2021-03-09 15:36:19

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

代码语言:javascript
运行
复制
#!/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

票数 0
EN

Unix & Linux用户

发布于 2021-03-08 14:22:47

也许你可以更新一下百事箱。我得到了1.30版本的命令

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/638181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档