比较日期和时间戳

比较日期和时间戳

我正在尝试比较两个时间戳,如果 x 大于 y,则执行一些操作。我在 Linux 机器上用 bash 尝试过,但收到错误“无效日期”,这是我的代码:

#!/bin/bash 
x='2020.01.23 14:41:18.554'
y='2020.01.23 17:17:02.323'

if [[ $(date -d "$x") -gt $(date -d "$y") ]]
 then
   echo -e "first value is greater than second"
       #### Perform some actions
       #### Perform some actions
  else
   echo "second value is greater, so do nothing"
fi
exit

当我运行脚本时,出现以下错误

date: invalid date `2020.01.23 14:41:18.554'
date: invalid date `2020.01.23 17:17:02.323'

我尝试将整个值转换为纪元时间然后进行比较,但在纪元时间中,不计算毫秒。如何才能正确进行这种比较,包括毫秒?谢谢。

答案1

你的例子有两个问题。

首先,您需要将.日历日期中的 替换为/-。这消除了无效日期错误。

然后您需要添加+%s%N到您的date命令中。这会将日期转换为以纳秒为单位的纪元时间。

下面的代码对我来说效果很好。

x='2020/01/23 14:41:18.554'    
y='2020/01/23 17:17:02.323'    

if [[ $(date -d "$x" +%s%N) -gt $(date -d "$y" +%s%N) ]]    
 then    
   echo -e "first value is greater than second"    
       #### Perform some actions    
       #### Perform some actions    
  else    
   echo "second value is greater, so do nothing"    
fi    
exit 

编辑:参见https://stackoverflow.com/questions/16548528/command-to-get-time-in-milliseconds为了与纳秒兼容

答案2

您的所有时间戳都将采用示例中使用的形式吗?如果是这样,您可以将它们作为字符串进行比较。

相关内容