unix shell脚本以GMT格式获取30分钟前的日期

unix shell脚本以GMT格式获取30分钟前的日期,unix,datetime,shell,scripting,Unix,Datetime,Shell,Scripting,我有一个shell脚本,我想用GMT获取30分钟前的日期和时间 我的工作时间很长,但部分时间似乎不起作用: 一小时前 TZ=GMT+1日期+%Y-%m-%d%H:%m:%S 2010-01-08 17:43:57 2小时前 TZ=GMT+2日期+%Y-%m-%d%H:%m:%S 2010-01-08 16:44:07 半小时前 TZ=GMT+.5日期+%Y-%m-%d%H:%m:%S 2010-01-08 18:44:38 尝试了大量的0.5和1.5的组合,没有部分时间似乎起作用,这很奇怪,因为

我有一个shell脚本,我想用GMT获取30分钟前的日期和时间

我的工作时间很长,但部分时间似乎不起作用:

一小时前 TZ=GMT+1日期+%Y-%m-%d%H:%m:%S 2010-01-08 17:43:57

2小时前 TZ=GMT+2日期+%Y-%m-%d%H:%m:%S 2010-01-08 16:44:07

半小时前 TZ=GMT+.5日期+%Y-%m-%d%H:%m:%S 2010-01-08 18:44:38

尝试了大量的0.5和1.5的组合,没有部分时间似乎起作用,这很奇怪,因为有些时区没有完全抵消一小时

有什么建议吗

无法使用perl或ruby,需要常规shell或mysql调用。

date-u--date=“-30分钟”

这与作为GNU coreutils一部分的date命令的版本有关。我不知道它是否适用于其他版本的
date
程序。

您也可以这样做:

TZ='UTC+0:30' date

如果您使用的是OS X,那么相应的选项是:date-u-v-30m谢谢,如果我有一个可以同时在linux centos和osx上运行的版本,这将非常理想,但是我现在可以使用两个版本。还有“-30分钟”,您可以说“30分钟前”,这完全符合你的问题。适用于Mac OS X和Ubuntu。这是一个更兼容的解决方案-也适用于alpine linux
TZ='UTC+0:30' date