Shell 计算日期时差

Shell 计算日期时差,shell,Shell,我有两个变量 GMDCOM变量以以下格式存储日期时间 Tue Oct 1 13:37:38 2013 Tue Oct 1 13:32:40 2013 Tue Oct 1 13:37:53 2013 Tue Oct 1 13:35:33 2013 Tue Oct 1 13:34:33 2013 Tue Oct 1 13:32:33 2013 GMDRRS变量以以下格式存储日期时间 Tue Oct 1 13:37:38 2013 Tue Oct 1 13:32:40 2013 T

我有两个变量

GMDCOM变量以以下格式存储日期时间

Tue Oct  1 13:37:38 2013
Tue Oct  1 13:32:40 2013
Tue Oct  1 13:37:53 2013
Tue Oct  1 13:35:33 2013
Tue Oct  1 13:34:33 2013
Tue Oct  1 13:32:33 2013
GMDRRS变量以以下格式存储日期时间

Tue Oct  1 13:37:38 2013
Tue Oct  1 13:32:40 2013
Tue Oct  1 13:37:53 2013
Tue Oct  1 13:35:33 2013
Tue Oct  1 13:34:33 2013
Tue Oct  1 13:32:33 2013
我想计算一下日期时间差 e、 g 2013年10月1日星期二13:37:38-2013年10月1日星期二13:35:33,格式为hh:mm:ss 并将其存储在另一个变量中。我不想使用PERL、AWK或SED。相反,我想使用普通的bashshell命令来实现它。请帮助。

尝试以下内容

#!/bin/bash

GMDCOM='Tue Oct  1 13:37:38 2013'
GMDRRS='Tue Oct  1 13:35:33 2013'

d1=$(date -d "$GMDCOM" +%s)
d2=$(date -d "$GMDRRS" +%s)
dd=$(($d1-$d2))

ss=$(($dd%60))
mm=$((($dd/60)%60))
hh=$((($dd/3600)%60))

printf "%02d:%02d:%02d\n" "$hh" "$mm" "$ss"

当我试图运行shell时,它会显示date:invalize选项——我无法运行上面的代码。当我试图运行shell时,它会显示日期:非法选项--d@Tanmoy请键入
人员日期
并查看是否显示
-d
选项。您确定要在
bash
中运行此程序吗?是的,我使用了man date..它没有显示-d选项。我只在bash中运行这个。@Tanmoy很抱歉,但在这种情况下,您必须安装GNU
date
实用程序,或者等待其他解决方案。我原以为所有的
date
实用程序都会有这个,但似乎这是特定于GNU日期的。检查这个或@fedorqui-Ohh,我没有注意到来自同一个OP的副本。这应该是绝对关闭的。