Java Dates – What's the correct class to use?
So the whole Java Date/Calendar/GregorianCalendar thing is obviously a joke. What’s the right Date class to use?
Edit: Building an SDK for third parties on Android where the application needs to provide a date
More Edit: Things that make this so obviously a joke:
- 99% of Date is deprecated
- Date’s Year is offset from 1900
- Date’s Month is zero-indexed while day is one-indexed
- Dates are mutable
- You’re supposed to use a Calendar to create a date…
- … except you really have to use a GregorianCalendar
- Do a significant percent of developers want to use a different calendar?
- Calendar.getTime() returns a Date
- There’s no Date math (like how far apart are two dates in years)
- Messing with milliseconds since epoch doesn’t count
- You can’t chain parts together to get an expression (like the date one year ago today)
- Probably more stuff
2 Solutions collect form web for “Java Dates – What's the correct class to use?”
Joda-Time. Even on Android.
If you want to stick to Java SE classes, it depends on what you’re trying to do.
Edit: You keep changing your question.
The “right” date type totally depends on your application; however,
java.util.Calendar is generally accepted as the replacement for
java.util.Date as it provides more functionality (especially regarding extraction of individual date elements like year, month, etc). In reality,
Date can be much easier to use for certain situations (and is the one used by Java’s own
DateFormat classes), so it’s a judgement call.
It’s not difficult to convert between the two so I would pick one and stick with it consistently for your API. If I were to pick one I’d use
Date because it’s the simplest, IMHO.