在Python中获取最后一个星期日和星期六的日期 [英] get the last sunday and saturday's date in python

查看:612
本文介绍了在Python中获取最后一个星期日和星期六的日期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

希望利用 datetime 来获取上周的开始和结束日期,即星期日至星期六。

Looking to leverage datetime to get the date of beginning and end of the previous week, sunday to saturday.

所以,如果今天是13年8月12日,我想定义一个要打印的函数:

So, if it's 8/12/13 today, I want to define a function that prints:

上周日是8/4 / 2013年和上星期六是2013年8月10日

我该如何写呢?

编辑:好的,所以似乎有一些关于边缘情况的问题。对于星期六,我希望在同一周,对于其他任何事情,我希望紧接今天 日期之前的日历周。

okay, so there seems to be some question about edge cases. For saturdays, I want the same week, for anything else, I'd like the calendar week immediately preceding today's date.

推荐答案

datetime.date.weekday 返回星期一的 0

尝试以下操作:

>>> import datetime
>>> today = datetime.date.today()
>>> today
datetime.date(2013, 8, 13)
>>> idx = (today.weekday() + 1) % 7 # MON = 0, SUN = 6 -> SUN = 0 .. SAT = 6
>>> idx
2
>>> sun = today - datetime.timedelta(7+idx)
>>> sat = today - datetime.timedelta(7+idx-6)
>>> 'Last Sunday was {:%m/%d/%Y} and last Saturday was {:%m/%d/%Y}'.format(sun, sat)
'Last Sunday was 08/04/2013 and last Saturday was 08/10/2013'

如果允许使用 python-dateutil

>>> import datetime
>>> from dateutil import relativedelta
>>> today = datetime.datetime.now()
>>> start = today - datetime.timedelta((today.weekday() + 1) % 7)
>>> sat = start + relativedelta.relativedelta(weekday=relativedelta.SA(-1))
>>> sun = sat + relativedelta.relativedelta(weekday=relativedelta.SU(-1))
>>> 'Last Sunday was {:%m/%d/%Y} and last Saturday was {:%m/%d/%Y}'.format(sun, sat)
'Last Sunday was 08/04/2013 and last Saturday was 08/10/2013'

这篇关于在Python中获取最后一个星期日和星期六的日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆