IMO its something that the older PHP versions did wrong. Or its possible that there was no easy way to create backwards compatibility with the existing procedural code and so there was no option but to write another set of functions to handle them. Both are good possibilities.
DateTime is 5.x functionality. The entire library is unstable between 5.0 and 5.3 where many new classes and methods were added. So the only frustrating thing is writing something on 5.3 which just doesn't work with say 5.2.8.
strtotime is also instable though as indicated by the changelogs. <4.4, next was listed as +2, <5.0.2 now was incorrectly calculated from midnight, and < 5.1.0 returns -1 on failure instead of false which is just silly since -1 is a valid time.
Compared to other languages, its hard to say. Most other languages I use you import to do many of the time manipulations. Before namespace (and even since due to backwards compatibility), php is stuck with only global symbols so it has dozens of functions for date and time.
header('HTTP/1.1 420 Enhance Your Calm');