January as 0 seems like a very definsible choice. Presumably they did it to match C. If anything the WTF there is that the day of the month doesn't start from 0.
Dunno what's up with getYear() though!
getYear() must have been written in the 1990s during the early years of Java: