Как сравнить две строки DateTime и вернуть разницу в часах?(оболочка bash) - PullRequest
11 голосов
/ 14 ноября 2011

Я могу сделать это в php с помощью следующего кода:

$dt1 = '2011-11-11 11:11:11';
$t1 = strtotime($dt1);

$dt2 = date('Y-m-d H:00:00');
$t2 = strtotime($dt2);

$tDiff = $t2 - $t1;

$hDiff = round($tDiff/3600);

$hDiff даст мне результат в часах.

Как мне реализовать вышеизложенное в оболочке bash?

1 Ответ

24 голосов
/ 14 ноября 2011

Вы можете использовать команду date для достижения этой цели.man date предоставит вам более подробную информацию.В этих строках может быть что-то вроде сценария bash (кажется, что он отлично работает в Ubuntu 10.04 bash 4.1.5):

#!/bin/bash                                                                                                                                                   

# Date 1
dt1="2011-11-11 11:11:11"
# Compute the seconds since epoch for date 1
t1=`date --date="$dt1" +%s`

# Date 2 : Current date
dt2=`date +%Y-%m-%d\ %H:%M:%S`
# Compute the seconds since epoch for date 2
t2=`date --date="$dt2" +%s`

# Compute the difference in dates in seconds
let "tDiff=$t2-$t1"
# Compute the approximate hour difference
let "hDiff=$tDiff/3600"

echo "Approx hour diff b/w $dt1 & $dt2 = $hDiff"

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...