如何比较两个不同格式的日期?

时间:2018-12-10 14:27:11

标签: bash date timestamp comparison utc

从古老的日志中读取,日期是这样的:

Wed 31 Oct 2018 08:42:00 AM UTC

另一个日期是这样的:

12-10-2018 14:37:42

这是date -r ${fname} "+%m-%d-%Y %H:%M:%S"所能提供的最好的结果。

是否可以比较这些日期?每天首先使用一个单词的事实严重挫败了我。如果是,怎么办?

3 个答案:

答案 0 :(得分:2)

如果日期遵循x0A模式,则比较起来容易得多,因为普通的旧字符串比较有效:

ymdHMS

答案 1 :(得分:1)

如果以上述格式获取日期,则需要转换第二个数据字符串,以使其首先可以由Unix date命令解析。这是一个示例:

#!/usr/bin/env bash

dt1='Wed 31 Oct 2018 08:42:00 AM UTC'
dt2='12-10-2018 14:37:42'

dt2=$(sed -E 's/^([0-9]{2}-[0-9]{2})-([0-9]{4})/\2-\1/' <<< "$dt2")
echo "$dt2" # 2018-12-10 14:37:42

# compare EPOCH second values of both dates

if (( $(date -d "$dt1" '+%s') < $(date -d "$dt2" '+%s') )); then
    echo "date1 is less than date2"
else
    echo "date1 is >= than date2"
fi

答案 2 :(得分:-1)

例如,可以通过创建日期对象的新实例来比较两个日期。

var date1 = new Date('Wed 31 Oct 2018 08:42:00 AM UTC');
var date2 = new Date('12-10-2018 14:37:42');

这会将其转换为默认日期格式。