我有一个约会"10/10/11(m-d-y)",我想使用Python脚本添加5天.请考虑一个适用于月末的一般解决方案.
我使用以下代码:
import re
from datetime import datetime
StartDate = "10/10/11"
Date = datetime.strptime(StartDate, "%m/%d/%y")
Run Code Online (Sandbox Code Playgroud)
print Date - >正在打印 '2011-10-10 00:00:00'
现在我想在这个日期添加5天.我使用了以下代码:
EndDate = Date.today()+timedelta(days=10)
Run Code Online (Sandbox Code Playgroud)
哪个返回了这个错误:
name 'timedelta' is not defined
Run Code Online (Sandbox Code Playgroud) 我想知道如何获得这种差异的确切月数:
date1 = datetime.strptime(str('2011-08-15 12:00:00'), '%Y-%m-%d %H:%M:%S')
date2 = datetime.strptime(str('2012-02-15'), '%Y-%m-%d')
Run Code Online (Sandbox Code Playgroud)
date2-date1结果
datetime.timedelta(183, 43200)
Run Code Online (Sandbox Code Playgroud)
我想知道确切的月数,在这种情况下它应该返回5而不是6(因为小时)
我有两个datetime.date对象.我想迭代它们之间的所有月份.(能够在任意单位时间内迭代会更好.)我不确定最好的方法是什么.
理想情况下,我正在寻找类似的东西:
for month in (end - start).months:
# month is a date object
# ...
Run Code Online (Sandbox Code Playgroud)
例如,如果end和start分别是4月和2月的任何日期,结果将是2月,3月,4月.
我需要实现代码,这将帮助我获得两个日期之间的月份列表.
我已经有了代码,它将给出月份增量,即月份数.
实际上,我需要获得两个日期之间的月份列表的方法.
这是获得月份增量的代码.
import calendar
import datetime
def calculate_monthdelta(date1, date2):
def is_last_day_of_the_month(date):
days_in_month = calendar.monthrange(date.year, date.month)[1]
return date.day == days_in_month
imaginary_day_2 = 31 if is_last_day_of_the_month(date2) else date2.day
monthdelta = (
(date2.month - date1.month) +
(date2.year - date1.year) * 12 +
(-1 if date1.day > imaginary_day_2 else 0)
)
print monthdelta
return monthdelta
date2 = datetime.datetime.today()
date1 = date2.replace(month=01)
calculate_monthdelta(date1, date2)
Run Code Online (Sandbox Code Playgroud)
现在我需要一种方法来获得相同的月份列表.
任何帮助表示赞赏如果有任何方法可以获得两个日期之间的月份列表.
注意:除了我在这里使用的代码之外,请提出任何建议(如果有的话).
我想在当前年份和 2016 年之间随机选择一个月份。这是我目前非常幼稚的解决方案
from random import choice
def get_month():
return choice({'2018-06','2018-05','2018-04','2018-03'})
Run Code Online (Sandbox Code Playgroud)
很明显,这个集合在未来会变得太大,那么实现这一目标的更好方法是什么?