在Shell中我们可以利用date命令比较两个日期的大小,方法是先把日期转换成时间戳格式,再进行比较。
date 的+%s可以将日期转换成时间戳格式,看下面的例子:
#!/bin/bash
date1="2008-4-09 12:00:00"
date2="2008-4-10 15:00:00"
date3="Aug 17 16:47:53 2011"
t1=`date -d "$date1" +%s`
t2=`date -d "$date2" +%s`
t3= date -d "$date3" +%s
if [ $t1 > $t2 ]; then
echo "$date1 > $date2"
elif [ $t1 = $t2 ]; then
echo "$date1 == $date2"
else [$t1 < $t3]; then
echo $date1 < $date3"
fi
# 多种输入格式都支持.
下面介绍下python中比较两个日期大小的脚本.
在实际工作中用到,以供后续参考及备忘
时间区间比较函数
import time
# 这里比较l_time 是否在时间区间[start_t, end_t]中
def compare_time(l_time,start_t,end_t):
s_time = time.mktime(time.strptime(start_t,'%Y%m%d%H%M')) # get the seconds for specify date
e_time = time.mktime(time.strptime(end_t,'%Y%m%d%H%M'))
log_time = time.mktime(time.strptime(l_time,'%Y-%m-%d %H:%M:%S'))
if (float(log_time) >= float(s_time)) and (float(log_time) <= float(e_time)):
return True
return False
# 在用mktime时,注意import time 模块,否则会提示找不到改attribute. 输入的时间格式必须跟自己的格式化串保持一致.
如时间: "2011-11-10 14:56:58" 定义格式串时应该为: "%Y-%m-%d %H:%M:%S"
有试过 from datetim import datetime,time , 但是没有成功,暂时没有考虑去解决.