I use Java time a lot and yes it has to be that complex. One of my favourite examples is Duration vs Period. They are just not the same once you factor in timezones. And I like that they make it difficult for you to mess that up, although I'm sure there is a way.