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

  • android admob resize on landscape
  • android: Exception in org.eclipse.swt.SWTError: No more handles
  • How do I use obtainStyledAttributes(int ) with internal Themes of Android
  • Send message from wearable to phone and then immediately reply
  • How do I show an alert dialog only on the first run of my application?
  • Differences between Intent and PendingIntent
  • 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

    Related posts:

    Can I use Cobertura on Unit Tests with PowerMock?
    Inset drawable not working as described in documentation
    Bluetooth “out of band” (OOB) pairing on Android?
    How do I get the CURRENT orientation (ActivityInfo.SCREEN_ORIENTATION_*) of an Android device?
    Implementing Ripple effect outside ImageButton
    NoSuchMethodError using commonc codec in Android application
  • Setting PopupMenu menu items programmatically
  • Send SMS between Android emulators
  • ListView Not Updating After Filtering
  • share image does not work in viber and facebook
  • How to show alphabetical letters on side of Android ListView
  • Google Places API for Android - PlacePikcer without search option
  • 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. Date and Calendar.

    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.

    Android Babe is a Google Android Fan, All about Android Phones, Android Wear, Android Dev and Android Games Apps and so on.