@schlink If it's always an ISO 8601 datetime, you can use `datetime.fromisoformat` (but it looks like you have a Z at the end). If it's always got the Z, you can do:
```
dt_str = dt_str[:-1] + "+00:00"
pub_date = datetime.fromisoformat(dt_str)
```
If it doesn't always have the Z, you can do:
```
if dt_str.endswith("Z"):
dt_str = dt_str[:-1] + "+00:00"
pub_date = datetime.fromisoformat(dt_str)
```
@schlink I'll note that `datetime.fromisoformat()` is ~75x faster than `datetime.strptime`:
`>>> dt_str = "2021-05-18T19:00:00+00:00"`
`>>> %timeit datetime.fromisoformat(dt_str)
119 ns ± 1.28 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)`
`>>> %timeit datetime.strptime(dt_str, "%Y-%m-%dT%H:%M:%S%z")`
`8.88 µs ± 285 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)`