kakakakakakakk
kakakakakakakk

Reputation: 519

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

I need to get the timestamps in milliseconds based on the current day. The start timestamp must be Monday 00:00 (start of the day of the current week) and the end timestamp should be the end of the week which in my case ends with Friday 23:59. I have an implementation that does not give the timestamps from 00:00 to 23:59 maybe you can help me change my solution


.

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))

Upvotes: 2

Views: 2283

Answers (3)

anon
anon

Reputation:

Something like this works:

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)

It gives:

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

Upvotes: 0

buran
buran

Reputation: 14233

You can use 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))

output

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

Upvotes: 3

Patrick Artner
Patrick Artner

Reputation: 51643

Start with a datetime to include time fields, but create it only from the year, month, day values of the date.today().

Subtract the current weekday to get to Monday 0:0:0.

Add 5 days to get to Saturday 0:0:0 and subtract 1 minute to get to 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))

Output:

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

Upvotes: 2

Related Questions