python datetime.date_python,datetime.date:两天之间的差异

假设日期1> =日期2,我想计算它们之间的所有日期,然后将它们打印出来.这是我想要实现的一个例子.但我认为这根本不是有效的.有一个更好的方法吗?

# i think +2 because this calc gives only days between the two days,

# i would like to include them

daysDiff = (dateTo - dateFrom).days + 2

while (daysDiff > 0):

rptDate = dateFrom.today() - timedelta(days=daysDiff)

print rptDate.strftime('%Y-%m-%d')

daysDiff -= 1

解决方法:

我没有看到这种效率特别低效,但是如果没有while循环,你可以使它更清晰:

delta = dateTo - dateFrom

for delta_day in range(0, delta.days+1): # Or use xrange in Python 2.x

print dateFrom + datetime.timedelta(delta_day)

(另外,请注意如何在日期上打印或使用str为您免费生成’%Y-%m-%d’格式)

但是,如果您一次性创建一长串的日期而不是仅仅打印,这样做可能效率很低,例如:

[dateFrom + datetime.timedelta(delta_day) for delta_day in range(0, delta.days+1)]

这可以通过创建生成器而不是列表来轻松纠正.在上面的例子中用[…]替换[…],或者:

def gen_days_inclusive(start_date, end_date):

delta_days = (end_date - start_date).days

for day in xrange(delta_days + 1):

yield start_date + datetime.timedelta(day)

哪个更适合您的语法口味.

标签:python

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值