我将如何比较两个日期,以确定哪一个是以后的,使用python?

例如,我想检查当前日期是否超过我正在创建的列表中的最后一个日期,假日日期,以便它自动发送电子邮件,告诉管理员更新holiday.txt文件。

运算符,就像其他比较一样。

你用原型int compare_dates(void const *, void const*)写入函数,并实现逻辑比较。它可能不是一只Python。

@Larsmans:对不起任何语言/任何语言/任何使用不合理语言的人,都应在文件处理期间花费几分钟的时间,并尝试输出日期

Docs.python.org/Library/datetime.html 350;datetime-objects Ctrl-F search for"supported operations"

@Fred Foo this question is about Python,not C.

@Galaxy-he"s using an analogy,to show what should be simple to a seasoned person might not be simple to a total beginner and he"s using C to implicate this.他不认为这个问题是关于C.他是对的,我在8年前就提出这个问题时是一个完全的开始,而且他也不知道如何处理这个问题。

是的,我同意弗雷德的模拟帮助。我是个好人,但在Python,我在你8年前的同一个阶段。注:

使用datetime方法和操作符<及其亲属。


9>>> from datetime import datetime, timedelta
>>> past = datetime.now() - timedelta(days=1)
>>> present = datetime.now()
>>> past < present
True
>>> datetime(3000, 1, 1) < present
False
>>> present - datetime(2000, 4, 4)
datetime.timedelta(4242, 75703, 762105)

如果有人想知道的话,这也适用于时区感知值。

past和present有什么不同?我不能理解你的例子,而且它的结果没有意义。

@emadpres:假设这是手动输入的。前一行是第一行,而现在的行是第二行…所以前一行是先输入的,所以过去

@Matgessel这是否意味着,如果这两个日期来自不同的时区,那么在比较这些值之前,它将理解这一点并将它们转换为任何一个公共时区?如果是,那真的很酷。

好的,快速搜索医生给了我答案。在比较之前,它实际上调整了不同的时区。

引用文档中的话:"如果一个比较程序是幼稚的,而另一个比较程序意识到了这一点,则在尝试进行订单比较时会引发类型错误。对于平等比较,天真的实例永远不等于有意识的实例。如果两个比较方都知道并且具有相同的TZINFO属性,则忽略公共TZINFO属性并比较基准日期时间。如果两个比较数都知道并且具有不同的TZINFO属性,则首先通过减去它们的UTC偏移量(从self.utcoffset()获得)来调整比较数。"

变量名应该是past和past_but_a_little_after。从技术上讲,当比较past < present时,present也在过去。

使用time。

假设您的初始日期是这样的字符串:埃多克斯1〔9〕埃多克斯1〔10〕

您可以执行以下操作:newdate1 = time.strptime(date1,"%d/%m/%Y")和newdate2 = time.strptime(date2,"%d/%m/%Y")将它们转换为python的日期格式。然后,比较明显:newdate1 > newdate2返回False。newdate1 < newdate2返回True。

datetime.date(2011, 1, 1) < datetime.date(2011, 1, 2)将返回True。

datetime.date(2011, 1, 1) - datetime.date(2011, 1, 2)将返回datetime.timedelta(-1)。

datetime.date(2011, 1, 1) + datetime.date(2011, 1, 2)将返回datetime.timedelta(1)。

请参阅文档。

对于计算两个日期差中的天数,可以按如下方式进行:


12import datetime
import math
issuedate = datetime(2019,5,9) #calculate the issue datetime
current_date = datetime.datetime.now() #calculate the current datetime
diff_date = current_date - issuedate #//calculate the date difference with time also
amount = fine #you want change
if diff_date.total_seconds() > 0.0: #its matching your condition
days = math.ceil(diff_date.total_seconds()/86400) #calculate days (in
one day 86400 seconds)
deductable_amount = round(amount,2)*days #calclulated fine for all days

因为如果一秒钟比到期日长,我们就得收费

其他使用datetime和比较的答案也只在时间上有效,没有日期。

例如,要检查现在是早8点还是早8点,我们可以使用:


3import datetime
eight_am = datetime.time( 8,0,0 ) # Time, without a date

稍后与以下内容进行比较:

1datetime.datetime.now().time() > eight_am

返回True。