날짜 및 타임스탬프 비교

날짜 및 타임스탬프 비교

두 개의 타임스탬프를 비교하고 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

모든 타임스탬프가 예시에 사용된 형식인가요? 그렇다면 문자열로 비교할 수 있습니다.

관련 정보