如何比较两个不同格式的日期?
How to compare two dates of different format?
从一篇古老的日志中读到,日期是这样的:
Wed 31 Oct 2018 08:42:00 AM UTC
另一个日期是这样的:
12-10-2018 14:37:42
这是我能用 date -r ${fname} "+%m-%d-%Y %H:%M:%S"
得到的最好的。
是否可以比较这些日期?当天首先使用一个词这一事实让我非常沮丧。如果是,如何?
如果日期遵循 ymdHMS
模式,比较起来会容易得多,因为普通的旧字符串比较有效:
#!/bin/bash
format='+%Y-%m-%d %H:%M:%S'
date1='Wed 31 Oct 2018 08:42:00 AM UTC'
date1=$(date -d "$date1" "$format")
date2=$(date -r "$fname" "$format")
if [[ $date1 < $date2 ]] ; then
echo "$date1 goes before $date2"
else
echo "$date1 goes after $date2"
fi
例如,您可以通过创建日期对象的新实例来比较两个日期。
var date1 = new Date('Wed 31 Oct 2018 08:42:00 AM UTC');
var date2 = new Date('12-10-2018 14:37:42');
这会将其转换为默认日期格式。
如果您以上述格式获取日期,那么您需要首先转换第二个数据字符串以使其可由 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})/-/' <<< "$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
从一篇古老的日志中读到,日期是这样的:
Wed 31 Oct 2018 08:42:00 AM UTC
另一个日期是这样的:
12-10-2018 14:37:42
这是我能用 date -r ${fname} "+%m-%d-%Y %H:%M:%S"
得到的最好的。
是否可以比较这些日期?当天首先使用一个词这一事实让我非常沮丧。如果是,如何?
如果日期遵循 ymdHMS
模式,比较起来会容易得多,因为普通的旧字符串比较有效:
#!/bin/bash
format='+%Y-%m-%d %H:%M:%S'
date1='Wed 31 Oct 2018 08:42:00 AM UTC'
date1=$(date -d "$date1" "$format")
date2=$(date -r "$fname" "$format")
if [[ $date1 < $date2 ]] ; then
echo "$date1 goes before $date2"
else
echo "$date1 goes after $date2"
fi
例如,您可以通过创建日期对象的新实例来比较两个日期。
var date1 = new Date('Wed 31 Oct 2018 08:42:00 AM UTC');
var date2 = new Date('12-10-2018 14:37:42');
这会将其转换为默认日期格式。
如果您以上述格式获取日期,那么您需要首先转换第二个数据字符串以使其可由 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})/-/' <<< "$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