Home > database >  How to know if a Date object represents only Time in Java?
How to know if a Date object represents only Time in Java?

Time:01-09

I'm trying to save data about date and time to List. Let's say, I have List<Date>. I have 2 types of formatting of strings: dd/mm/yy and hh:mm. Well, I'm able to easily format and create an instance of java.util.Date using SimpleDateFormat. However, when I try to print the object, the one that I saved time data into prints something like this:

Thu Jan 01 06:30:00 AZT 1970

How do I differentiate between these two and get the following output instead:

06:30

Note: Years may start earlier than 1970.

Thanks for the help and appreciate the effort.

CodePudding user response:

How to know if a Date object represents only Time in Java?

There is no way to do this reliably. Every value of Date that you are using to represent a time also represents a valid date. And you can't distinguish the two cases ... except by using an unreliable heuristic.

The real problem is that you should not use Date to represent times.

  • A Date represents a single point in the time continuum.
  • A time is either a duration or multiple time points depending on how you use it. (It depends on your use-case.)

In fact, you probably not be using java.util.Date at all. Date is legacy Java class that has many API flaws. It was superseded in Java 8 by the classes and interfaces in the java.time package. These provide distinct classes for the various different concepts.

I recommend that you read the Date-Time trail in the Oracle Java Tutorial to get a basic understanding. This will help you decide the correct classes to choose for your use-case.

Time is complicated in the real world, and it is complicated in Java too.

  •  Tags:  
  • Related