Самый простой способ преобразования из 30th Sep 2018
или Mon 30th Sep 2018
в 2018-09-30 00:00:00
использует dateutil.parser
, то есть:
from dateutil.parser import parse
d = "30th Sep 2018"
dd = "Mon 30th Sep 2018"
print parse(d)
print parse(dd)
# 2018-09-30 00:00:00
# 2018-09-30 00:00:00
Для обратного преобразованияесть datetime.strptime
, но я боюсь, что он не выводит порядковые числа (1-е, 2-е), как вы хотите, тем не менее, вы можете достичь желаемого результата, используя небольшую функцию , т.е.:
def ord(n):
return str(n)+("th" if 4<=n%100<=20 else {1:"st",2:"nd",3:"rd"}.get(n%10, "th"))
x = datetime.datetime.strptime("2018-09-30 00:00:00", '%Y-%m-%d %H:%M:%S')
print "{} {}".format(ord(int(x.strftime('%d'))), x.strftime('%b %Y'))
# 30th Sep 2018