python - Python 从日期中减去日期或天数得到年、月、日
问题描述
我试图从今天的日期中减去两个日期或天数。我想在几年、几个月、几天内得到结果。怎么做?
期待1 year, 2 months, 5 days
, 20 days
, 3 months, 2 days
ago 等,而不仅仅是几天。
import datetime
import pytz
tz='US/Pacific'
birthday = datetime.datetime(2020, 2, 19, 12, 0, 0)
>>> import datetime
>>> import pytz
>>> tz='US/Pacific'
>>> birthday = datetime.datetime(2020, 2, 19, 12, 0, 0)
>>> diff = datetime.datetime.now() - birthday
>>>
>>> diff
datetime.timedelta(days=326, seconds=39130, microseconds=319509)
>>>
>>> birthday = datetime.datetime(2015, 2, 19, 12, 0, 0)
>>> diff = datetime.datetime.now() - birthday
>>> diff
datetime.timedelta(days=2152, seconds=39151, microseconds=823846)
>>>
>>> diff.days
2152
解决方案
使用包中的dateutil.relativedeltadateutil
:
import datetime
from dateutil.relativedelta import relativedelta
>>> relativedelta(datetime.datetime.now(), datetime.datetime(2020, 2, 19, 12, 0, 0))
relativedelta(months=+10, days=+23, hours=+4, minutes=+8, seconds=+42, microseconds=+204978)
>>> relativedelta(datetime.datetime.now(), datetime.datetime(2015, 2, 19, 12, 0, 0))
relativedelta(years=+5, months=+10, days=+23, hours=+4, minutes=+9, seconds=+10, microseconds=+624971)
您可以提取年、月等,例如relativedelta().years
,relativedelta().months
等。
推荐阅读
- javascript - 如何使用 api 制作 Youtube 成绩单 (captions.download
- r - 创建一个空间多边形数据框,该数据框保留与另一个空间多边形数据框的重叠要素,但不裁剪多边形范围
- json - 使用 Azure 数据迁移工具将 JSON 导入 Cosmos DB 时出现“请求率很大”错误
- hadoop - Hive 应用程序懒惰启动
- python - 基于另一个文件对数据帧值执行操作
- c++ - 您是如何更改编译的版本号的?
- javascript - 从主题覆盖 .Mui-disabled(或其他伪类/状态)(MUI v4.1.X)
- ios - 使用 deleteRows 后, becomeFirstResponer() 不会将焦点放在 textField
- postgresql-11 - 在插入触发器之前从内部数组元素更新列值
- datetime - Moment JS 在没有时间的情况下获取日期