2016-11-24 120 views
1

我有下面的输出,我需要在几秒钟内得到时间差。在几秒钟内获得时差?

------------------------------ 
Wed Nov 23 15:09:20 2016 
------------------------------ 
Wed Nov 23 15:27:47 2016 
------------------------------ 

一般一个月应该在所有情况下都一样的,所以我们可以逃避它,同为一年,我可以为一周中的一天,为确保当天得到不同的值,可以肯定的差别会在几秒钟和几分钟内,并可能在几小时内...

我尝试了一些awks和切::但我仍然有一个问题。

在此先感谢! 任何帮助表示赞赏!

+0

使用'date -d“Wed Nov 23 15:09:20 2016”+%s'将日期转换为纪元秒。然后以秒为单位计算差值。 –

+0

问题是它的aix盒子不是linux,我没有-d标志 – mshafey

+0

你的aix盒子上有perl/python/ruby​​吗? –

回答

0

您可以按如下方式使用GNU date

$ date1=$(date -d"Wed Nov 23 15:09:20 2016" +%s) 
$ date2=$(date -d"Wed Nov 23 15:27:47 2016" +%s) 
$ printf "difference in seconds: %s\n" "$((date2 - date1))" 
1107 
+0

问题是它的aix盒不是linux,我没有-d标志 – mshafey

+0

你可以看看你是否可以在AIX上使用'gawk'? '哪个gawk'? – Inian

+0

恐怕gawk不在那里......我想解决方案将是平面命令切割sed awk ..等等...... – mshafey

0

我的第一个perl脚本永远

# extract two dates and calculate difference in s 
# http://stackoverflow.com/questions/40781429/get-the-time-difference-in-seconds/ 
# 
# cat time_diff.txt | grep -e "20[0-2][0-9]" | perl time_difference.pl 

use Date::Parse; 

$date_str1 = <STDIN>; 
$date_str2 = <STDIN>; 
$date1 = str2time($date_str1); 
$date2 = str2time($date_str2); 

print $date2-$date1; 
print "\n"; 

太糟糕了,你不能使用日期-d,我是这样的一行感到骄傲:

cat time_diff.txt | grep -e "20[0-2][0-9]" | xargs -i date -d{} +%s | (read -d "\n" t1 t2; echo $t2-$t1 | bc) 

测试使用bash和的zsh在Linux上Mint 17.3

相关问题