Я бы отлично вырезал время и часовой пояс
Тогда у вас есть много вариантов. Как уже упоминалось, dateutil круто и отлично работает. Но если вы по какой-то причине хотели остаться в datetime, вы могли бы:
- Анализировать все, но знайте, что часовой пояс игнорируется
Datetime / strptime может анализировать все, но не понимает / не конвертирует часовые пояса. Если вы сделаете это, он просто проанализирует его как UT C.
>>> str(datetime.strptime("Jun 1, 2020 12:11:49 AM PDT", "%b %d, %Y %I:%M:%S %p %Z"))
'2020-06-01 00:11:49'
Вы также можете выбросить временную часть, прежде чем передать ее в strptime (), но это, вероятно, больше проблем, чем стоит того другие варианты.
Упс. Я не понимал, что% Z будет анализировать только определенные часовые пояса (которые, вероятно, зависят от вашей машины). Так что, если вы не можете это контролировать, это не сработает. На моей машине «PDT» будет анализировать, а «EDT» не сработает.
Учитывая это, я бы выбросил часовой пояс. Если он всегда в этом формате, то может быть что-то вроде:
>>> ts = "Jun 1, 2020 12:11:49 AM PDT"
>>> str(datetime.strptime(ts.rpartition(" ")[0], "%b %d, %Y %I:%M:%S %p"))
'2020-06-01 00:11:49'