How can I create a python datetime with trimmed milliseconds (3 digits) AND utc offset?

Question:

I’d like to get date with 3 digit milliseconds and UTC offset, for example:

'2022-06-27T14:51:23.230+00:00'

I have the following code:

now = datetime.datetime.now(datetime.timezone.utc).strftime('%Y%m%d-%H%M%S%f%z')
created = datetime.datetime.strptime(now,'%Y%m%d-%H%M%S%f%z').isoformat()

The issue is that I am getting the following format:

'2022-06-27T14:51:23.230061+00:00'

Obviously I cannot cut the last 3 digits using [:-3] as I will cut the utc offset and will end up with:

'2022-06-27T14:51:23.230061+00'

Is there any other way to tell datetime to return only 3 digits for milliseconds or trim it in any other way?

Asked By: PloniStacker

||

Answers:

You need to set timespec to 'milliseconds' when calling datetime.isoformat():

from datetime import datetime, timezone

created = datetime.now(timezone.utc).isoformat(timespec='milliseconds')

Output:

2022-06-27T14:51:23.230+00:00
Answered By: Olvin Roght
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.