What is the Best Practice for manipulating and storing dates in Java?

后端 未结 5 1541
夕颜
夕颜 2021-02-03 22:37

What is the Best Practice for manipulating and storing Dates e.g. using GregorianCalendar in an enterprise java application?

Looking for feedback and I will consolidate

5条回答
  •  既然无缘
    2021-02-03 22:58

    The best practice is usually precisely NOT to think in term of heavy date objects but to store a point in time. This is typically done by storing a value that doesn't suffer from corner cases nor from potential parsing problems. To do this, people usually store the number of milliseconds (or seconds) elapsed since a fixed point that we call the epoch (1970-01-01). This is very common and any Java API will always allow you to convert any kind of date to/from the time expressed in ms since the epoch.

    That's for storage. You can also store, for example, the user's preferred timezone, if there's such a need.

    Now such a date in milliseconds, like:

    System.out.println( System.currentTimeMillis() );
    1264875453
    

    ain't very useful when it's displayed to the end user, that's for granted.

    Which is why you use, for example, the example Joda time to convert it to some user-friendly format before displaying it to the end-user.

    You asked for best practice, here's my take on it: storing "date" objects in a DB instead of the time in milliseconds is right there with using floating point numbers to represent monetary amounts.

    It's usually a huge code smell.

    So Joda time in Java is the way to manipulate date, yes. But is Joda the way to go to store dates? CERTAINLY NOT.

提交回复
热议问题