On a slightly related note, here's an algorithm for parsing time from natural inputs into a normalized time:
https://stackoverflow.com/a/49185071/59087