首页 > 解决方案 > 使用 Bash 和 GNU 工具将 GMT 时间戳转换为本地时间

问题描述

我正在将结果写入包含如下行的日志文件:

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

标签: linuxbash

解决方案


这对我有用,但我无法解释这${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

推荐阅读