((\d{1,2}:)?[0-5]?\d:[0-5]?\d)((\s|'|||-|,|(PM|AM)|T))(((3[01]|[12][0-9]|0[1-9]|[1-9])|([0-9]{4}))(/|-||)(1[0-2]|0[1-9]|[1-9])(/|-)([0-9]{4}|(3[01]|[12][0-9]|0[1-9]))?)|((((3[01]|[12][0-9]|0[1-9]|[1-9])|([0-9]{4}))(/|-||)(1[0-2]|0[1-9]|[1-9]|\w{3})(/|-)([0-9]{1,4}|(3[01]|[12][0-9]|0[1-9])))(((\s|'|||-|,|T))((\d{1,2}:)?[0-5]?\d:[0-5]?\d[zZ]))?)
This is the Regular Expression that helps you match basic datetime formats before you bring it to the datetime format library. This is RE to help you, it's not 100% true different countries.
String -> RE -> Library format with strftime