3.0 datetime methods pt1

Part of #2267. Update the various datetime methods to use the new implementation. The existing tests helped find some problems in the new implementation which was nice.

I will rebase these changes later on, so they can be merged.