日付とタイムスタンプの比較

日付とタイムスタンプの比較

2つのタイムスタンプを比較し、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

あなたの例には2つの問題があります。

.まず、カレンダーの日付から/またはを変更する必要があります-。これにより、誤った日付エラーが削除されます。

+%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ナノ秒との互換性のために

おすすめ記事