我用这个命令卷曲:
卷曲“ https://api.sunrise-sunset.org/json?lat=46.745995&lng=7.122781&date=today” | jq'.results.sunrise'
结果是:
“上午5:31:51”
我住在UTC + 1,需要在同一命令中增加一小时。
如果该命令不起作用,则需要使用apt install jq安装jq或将其下载到Windows
答案 0 :(得分:0)
一种选择是使用对jq的这种调用:
jq '.results.sunrise
| strptime("%I:%M:%S %p")
| {h: ((.[3] + 1) % 24), m:.[4], s:.[5]}
| if .h < 12 then "\(.h):\(.m):\(.s) AM"
elif .h == 12 then "\(.h):\(.m):\(.s) PM"
else "\(.h - 12):\(.m):\(.s) PM"
end '
答案 1 :(得分:0)
使用日期时间格式时,唯一正确的策略是先将其转换为纪元秒,添加所需的偏移量,然后再转换回所需的日期时间格式。否则,迟早您会得到错误计算的日期/时间戳。
例如对于bsd / mac上的"5:31:51 AM"
这样的时间戳,加1小时就是:
bash $ echo "5:31:51 AM" | xargs -L1 -I{} date -j -f"%H:%M:%S %p" {} "+%s" | xargs -I{} echo {}+3600 | bc | xargs -I{} date -j -f"%s" {} "+%H:%M:%S %p"
06:31:51 AM
在Linux(gnu日期)上,cli有所不同(由于date实用程序):
bash $ echo '"5:31:51 AM"' | xargs -L1 -I{} date -d{} "+%s" | xargs -I{} echo {}+3600 | bc | xargs -I{} date -d @{} "+%H:%M:%S %p"
06:31:51 AM
bash $
之后,您可以插入curl / jq,但我将使用json实用工具- jtc
(Mac版)进行显示:
bash $ curl -s "https://api.sunrise-sunset.org/json?lat=46.745995&lng=7.122781&date=today" | jtc -w'[results][sunrise]' | xargs -L1 -I{} date -j -f"%H:%M:%S %p" {} "+%s" | xargs -I{} echo {}+3600 | bc | xargs -I{} date -j -f"%s" {} "+%H:%M:%S %p"
06:31:51 AM
bash $