Printing a datetime, with timezone, but excluding the timezone name

55 views Asked by At

I have a datetime object that I've created like so:

dt = datetime(2023, 9, 18, 22, 30, 0, tzinfo=timezone(timedelta(hours=9)))

This corresponds to September 18th, 2023 at 10:30PM JST. I want to print this datetime like this:

2023-09-18 22:30:00+09:00

I attempted the following options:

dt.strftime("%Y-%m-%d %H:%M:%S%Z")  # 2023-09-18 22:30:00UTC+09:00
dt.strftime("%Y-%m-%d %H:%M:%S%z")  # 2023-09-18 22:30:00+0900

Neither of these is the format I want, and now I either have to remove UTC from the first one or add a colon to the third-to-last position in the second one. Is there a way to get the output I want without having to resort to string manipulation?

2

There are 2 answers

1
FObersteiner On BEST ANSWER

use isoformat with date/time sep set to space and a timespec of seconds:

from datetime import datetime, timezone, timedelta

dt = datetime(2023, 9, 18, 22, 30, 0, tzinfo=timezone(timedelta(hours=9)))

print(dt.isoformat(" ", timespec="seconds")
# 2023-09-18 22:30:00+09:00
1
Timeless On

Is there a way to get the output I want without having to resort to string manipulation?

You can do that by simply casting your dt to str :

print(str(dt)) # which gives 2023-09-18 22:30:00+09:00