ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python – 未来6个月的日期

2019-07-25 17:57:47  阅读:383  来源: 互联网

标签:python-datetime python datetime date django


我在django中使用datetime Python模块.如果到期日期小于或等于当前日期的6个月,我希望计算日期.

我想要从当前日期起6个月生成日期的原因是设置一个警告,突出显示该事件发生的字段/列.我不知道我的问题是否清楚.我一直在阅读有关timedelta功能的内容,但我真的无法理解它.我试图写一个if语句来满足这个条件.有人能帮我吗?是django和python的新手.

解决方法:

有两种方法,一种只是略有不准确,另一种是不同的方式:

>添加365.25 / 2天的datetime.timedelta()(平均年份除以2):

import datetime
sixmonths = datetime.datetime.now() + datetime.timedelta(days=365.25/2)

这种方法将在未来6个月给你一个日期时间标记,我们将6个monhs定义为半年(平均).
>使用外部dateutil library,它具有出色的relativedelta级别,根据日历计算将当前日期增加6个月:

import datetime
from dateutil.relativedelat import relativedelta
sixmonths = datetime.datetime.now() + relativedelta(months=6)

这种方法将在6个月后为您提供日期时间戳,其中日期的月份组件已被转发6,并且它将考虑月份边界,确保不跨越它们.例如,8月30日加上6个月变为2月28日或29日(闰年允许).

演示可能会有所帮助.在我的时区,在发布时,这转换为:

>>> import datetime
>>> from dateutil.relativedelta import relativedelta
>>> now = datetime.datetime.now()
>>> now
datetime.datetime(2013, 2, 18, 12, 16, 0, 547567)
>>> now + datetime.timedelta(days=365.25/2)
datetime.datetime(2013, 8, 20, 3, 16, 0, 547567)
>>> now + relativedelta(months=6)
datetime.datetime(2013, 8, 18, 12, 16, 0, 547567)

因此两种方法之间存在1天和15小时的差异.

相同的方法也适用于datetime.date对象:

>>> today = datetime.date.today()
>>> today
datetime.date(2013, 2, 18)
>>> today + datetime.timedelta(days=365.25/2)
datetime.date(2013, 8, 19)
>>> today + relativedelta(months=6)
datetime.date(2013, 8, 18)

当应用于日期时,半年时间delta变得不那么精确(现在忽略delta的第5/8天分量).

标签:python-datetime,python,datetime,date,django
来源: https://codeday.me/bug/20190725/1535590.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有