在 AIX 中将字符串转换为日期并获取日期时间之间的差异

在 AIX 中将字符串转换为日期并获取日期时间之间的差异

我有一个这样的日志文件:

2019.09.02 06:40:28 ---
2019.09.02 06:43:34 --- 
2019.09.02 06:43:41 ---

我需要读取文件并获取日期时间之间的差异“2019.09.02 06:43:34“ -和- ”2019.09.02 06:40:28“以小时、分钟和秒为单位。

while read date time message
do
    if [[ $date = $searched_date* ]] && [[ $message = *$searched_message* ]] ; then
      #how to convert $date and $time to unixtime?
    fi
done <"$LOG_FILE"

我使用的是 AIX 7,并且没有date -d.

答案1

ksh93printf可以理解您的输入格式,因此您可以使用:

end=$(printf '%(%s)T' "2019.09.02 06:43:34")
start=$(printf '%(%s)T' "2019.09.02 06:40:28")
printf '%d\n' "$((1567421014-1567420828))"

或者更一般地说:

seconds=$(printf '%(%s)T' "$date $time")

要将秒差转换为 hh:mm:ss:

printf '%d hours, %d minutes, and %d seconds\n' "$((diff / 3600))" "$(( (diff % 3600) / 60))"  "$((diff % 60))"

相关内容