繁体   English   中英

在Python中比较日期字符串

[英]Comparing Dates string in Python

我需要比较两个日期(字符串)的python函数的帮助,如果date1比date2小,则返回True。 这是我的代码,但我不知道为什么测试用例返回“ True”(“ 2013/10/24”,“ 2013/9/24”)

# str, str -> boolean
def dateLessThan(date1,date2):
   date1 = date1.split('/')
   date2 = date2.split('/')
   if date1[0] < date2[0]:
      return True
   elif date1[0] == date2[0] and date1[1] < date2[1]:
      return True
   elif date1[0] == date2[0] and date1[1] == date2[1] and date1[2] < date2[2]:
      return True
   else:
      return False

考虑使用日期时间对象 (假设您的时间格式为YY / mm / dd)

from datetime import datetime

def dateLessThan(date1,date2):
   datetime1 = datetime.strptime(date1, '%Y/%m/%d')
   datetime2 = datetime.strptime(date2, '%Y/%m/%d')
   return datetime1 < datetime2

只需使用datetime.strptime类方法即可,而不是自己进行解析。

def dateLessThan(date1,date2):
   date1 = datetime.datetime.strptime(date1, "%Y/%m/%d")
   date2 = datetime.datetime.strptime(date2, "%Y/%m/%d")
   return date1 < date2

您的测试由于字符串的字典比较而失败。 "10" < "9"

无需使用datetime timetime解析(当使用复杂的格式,月份名称时,这是必需的),可以做一些简单的事情,因为只涉及数字(并且您有年/月/日,所以您接近ISO日期格式,您可以按字典顺序进行比较)。

只需将值映射为整数并转换为列表,然后让列表的自然/字典顺序执行其余操作即可:

def dateLessThan(date1,date2):
   return [int(x) for x in date1.split('/')] < [int(x) for x in date2.split('/')]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM