2010-01-08 236 views
7

我有一个shell脚本,我想在格林尼治标准时间30分钟前获取日期和时间。unix shell脚本在格林威治标准时间30分钟前取得日期

我有这个伟大的工作,完全小时,但部分时间似乎不工作:

1小时前

TZ = GMT + 1个日期+%Y-%间%d” “%H:%M:%S 2010-01-08 17时43分57秒

2小时前

TZ = GMT + 2日期+%Y-%间 - %d”,“%H :%M:%S 2010-01-08 16:44:07

1/2小时前

TZ = GMT + 0.5日期+%Y-%间 - %d”,“%H:%M:%S 2010-01-08 18时44分38秒

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

有什么建议吗?

无法使用Perl或红宝石需要正常的shell或mysql调用。

回答

13

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

+4

如果你是在OS X上的等效选项是:日期-u -v-30M – Max 2010-01-08 18:56:49

+0

感谢,将是理想的,如果我有一个在两个工作linux centos和osx,但我现在可以使用2个版本。 – Joelio 2010-01-08 19:09:13

+0

除了“-30分钟”之外,您可以说“30分钟前”,它完全符合您问题的这一部分。 – camh 2010-01-10 01:51:28

1
/usr/bin/env TZ='GMT' date -d '-30 minutes' 

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

+0

这一个没有在我的osx或centos上工作。 – Joelio 2010-01-08 19:08:41

+0

你能发布错误吗? – 2010-01-08 19:12:17

8

你也可以这样做:

TZ='UTC+0:30' date 
+0

适用于Mac OS X和Ubuntu。 – trashgod 2010-01-09 09:48:26

+0

这是正确的应该是+0:30转移其他方式 – alexsergeyev 2013-04-12 16:20:54

+1

@alexsergeyev:感谢您的更正。 – 2013-04-12 19:07:27

相关问题