我正在将结果获取到包含如下行的日志文件:

date: Sat, 12 Dec 2020 22:33:34 GMT
如果可能的话,我只想在Ubuntu Linux机器上使用Bash和GNU工具,以将其转换为本地时间“东部”或密歇根州/底特律。即使在夏令时或午夜之前/之前,它也应该可以工作。我希望将结果以通用格式存储在变量中,例如2020年12月1日为2020-12-01。对于军用时间,对于日期,最好使用第二个变量。我可以计算“周六/周日/周一/等”,也许无论如何都不需要。
我希望“cut”命令可以分隔出不同的字段,但是如何处理GMT?
#!/bin/bash

datime="date: Sat, 12 Dec 2020 22:33:34 GMT"

#magic happens

echo dalocaltime is $dalocaltime and dalocaldate is $dalocaldate
结果:
dalocaltime is 14:20:33 and dalocaldate is 2020-01-30

最佳答案

这对我有用,但是我无法解释${datime#* }部分

datime="date: Sat, 12 Dec 2020 22:33:34 GMT"
dalocaltime=$(date -d "${datime#* }" '+%R')
dalocaldate=$(date -d "${datime#* }" '+%Y-%m-%d')
echo dalocaltime is $dalocaltime and dalocaldate is $dalocaldate

07-24 12:49