How to compare two dates?
我将如何比较两个日期,以确定哪一个是以后的,使用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方法和操作符<及其亲属。
1 2 3 4 5 6 7 8 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)。
请参阅文档。
对于计算两个日期差中的天数,可以按如下方式进行:
1 2 3 4 5 6 7 8 9 10 11 12
| import 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点,我们可以使用:
1 2 3
| import datetime
eight_am = datetime.time( 8,0,0 ) # Time, without a date |
号
稍后与以下内容进行比较:
1
| datetime.datetime.now().time() > eight_am |
返回True。