在 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
我需要根据当天获取以毫秒为单位的时间戳。开始时间戳必须是星期一 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