python - 我需要从当前日期加上 7 天减去一个基准日期;但不确定如何计算年份的变化?
问题描述
PaymentDate = datetime.now().timetuple().tm_yday + 7
NS_Date_Text = driver.find_element(By.ID, "custrecord_ps_inv_date_val").text
basedate = datetime.strptime(NS_Date_Text, '%m/%d/%Y')
basedate1 = datetime.timetuple(basedate).tm_yday
DaysUntilPayment = PaymentDate - basedate1
到目前为止,此代码适用于 2019 年。但是,我不确定如何计算 2020 年或 2018 年
因此,我将当前日期转换为一年中的天数(1 月 1 日为 1,12 月 31 日为 365/366),然后在该数字上加 7。这是付款日期。
然后,我在网页上找到一个日期(BaseDate)并将该数字转换为一年中的某一天。
然后减去这两个数字。
如果当前日期是:2020 年 1 月 10 日(第 10 天)+ 7 = 第 17 天,我不确定它的效果如何。但基准日期是 2019 年 12 月 28 日(第 362 天)。
我将得到的数字是 345,这太超前了,而我需要数字(DaysUntilPayment)为 20。
我希望我能够很好地解释这一点。有问题请lmk!
解决方案
你让这种方式比它需要的更复杂。Python 的datetime.date()
对象知道如何自己处理增量;如果你减去两个date()
对象,你会得到一个timedelta()
实例,它有一个.days
属性。
接下来,您可以创建自己的timedelta()
对象以将 7 天添加到“今天”:
from datetime import date, timedelta
# 7 days from today
payment_date = date.today() + timedelta(days=7)
# find base date on the webpage
ns_date_text = driver.find_element(By.ID, "custrecord_ps_inv_date_val").text
basedate = datetime.strptime(ns_date_text, '%m/%d/%Y').date()
# calculate the difference in days between these two dates
# date - date = timedelta, so take the .days attribute from that result
days_until_payment = (payment_date - basedate).days
请注意,我只使用了结果的日期部分datetime.strptime()
。datetime
您也可以使用对象来完成所有这些操作,但是您可能不得不担心时区等问题,而不必这样做会更容易。
这些操作负责处理年份等细节,更重要的是,处理闰年:
>>> from datetime import date, datetime, timedelta
>>> payment_date = date(2020, 2, 22) + timedelta(days=7)
>>> payment_date # this is February 29th, a leap day!
datetime.date(2020, 2, 29)
>>> basedate = datetime.strptime("12/31/2019", '%m/%d/%Y').date # last day of 2019
>>> payment_date - basedate
datetime.timedelta(days=60)
>>> (payment_date - basedate).days # February 29th is 60 days later
60
有关更多详细信息,请参阅datetime.date
文档,其中包含支持的操作部分,其中包含:
date2 = date1 + timedelta
date2
被timedelta.days
删除的天数date1
timedelta = date1 - date2
这是准确的,不能溢出。timedelta.seconds
并且timedelta.microseconds
是0
和date2 + timedelta == date1
之后。
推荐阅读
- python - SQLAlchemy 如何创建表的“类型”行到表模型或 mixin 的关系或映射
- java - 为什么 BeanListHandler 不在我的课堂上工作?
- ios - 如何使用 Alamofire 下载 url 列表的图像并在此类操作结束时收到通知?
- json - 如何将表格结果和行的 json 表示形式组合为单个查询中的列?
- python - 我们有办法在 Python 3.x 中对数字应用多种格式吗?
- ios - 尝试使用 UI 测试用例在 Xcode 中运行
- django - Django 查询 JSONField 值等于 {}
- streamparse - 将拓扑从 Python 2 升级到 3
- jquery - bootstrap 4列中嵌套图像的高度相等
- python - Python在运行时删除类对象