在 python 中获取本周的开始和结束时间戳

get the start and end timestamp of the current week in python

我需要根据当天获取以毫秒为单位的时间戳。开始时间戳必须是星期一 00:00(当前一周的一天的开始),结束时间戳应该是一周的结束,在我的例子中,周五结束 23:59。我有一个没有给出从 00:00 到 23:59 的时间戳的实现也许你可以帮我改变我的解决方案


.

from datetime import date, datetime, timedelta
today = date.today()
start = today - timedelta(days=today.weekday())
end = start + timedelta(days=4)
print("Today: " + str(today))
print("Start: " + str(start))
print("End: " + str(end))

您可以使用 datetime.replace():

from datetime import date, datetime, timedelta
today = datetime.now() # or .today()
start = (today - timedelta(days=today.weekday())).replace(hour=0, minute=0, second=0, microsecond=0)
end = (start + timedelta(days=4)).replace(hour=23, minute=59, second=0, microsecond=0)
print("Today: " + str(today))
print("Start: " + str(start))
print("End: " + str(end))

输出

Today: 2021-07-08 22:56:19.277242
Start: 2021-07-05 00:00:00
End: 2021-07-09 23:59:00

datetime 开始以包含 time 字段,但仅根据 date.today().

year, month, day 值创建它

减去当前工作日得到 Monday 0:0:0

增加 5 天到达 Saturday 0:0:0 减去 1 分钟到达 Friday 23:59:00

from datetime import date, datetime, timedelta, time
# use a datetime to get the time fields but init it just with a date to default to 0:0:0
today = datetime(date.today().year, date.today().month, date.today().day)
start = today - timedelta(days=today.weekday()) 

end = start + timedelta(days=5) - timedelta(minutes=1)
print("Today: " + str(today))
print("Start: " + str(start))
print("End: " + str(end))

输出:

Today: 2021-07-08 21:55:41.062506
Start: 2021-07-05 00:00:00
End: 2021-07-09 23:59:00

像这样的东西有效:

from datetime import date, datetime, time

today = date.today()
week_start = datetime(today.year, 
                      today.month, 
                      today.day - today.weekday())
week_end = datetime(today.year, 
                    today.month, 
                    today.day + 7 - today.weekday(),
                    time.max.hour,
                    time.max.minute,
                    time.max.second,
                    time.max.microsecond)
print(week_start, week_end)

它给出:

2021-07-05 00:00:00 2021-07-11 00:00:00