compare dates in String format

It is not good practice and a code smell.

You lose semantic correct and readable code. (and extensibility, timezones, and the other right things, that already had been said)

You don't want to compare two Strings, you want to compare 2 Dates - so just do this, compare two Date objects.

If you create unit-tests and test your comparing method, you will never write a method that compares 2 "string"-dates correctly in every case, without converting them to dates.


Is it really necessary to convert them to date and compare?

If you don't have to include timezones and can ensure that you always have this format the lexical order will work.

Will I miss anything?

You lose the flexibility

Am I doing the right thing?

That depends on the point of view. I use something similar in a specialized search-enginge (only for performance reasons). Usually I convert to Date and compare these objects.


What you will be missing is the verification if the dates are in fact well-formatted.

If the dates are formatted exactly as you showed every time, then this will work. If there's any chance that it might be different, then parsing and comparing the resulting Date objects will add at least somewhat of a check.

For example if one of the two dates happens to be formatted as 2013.01.02 14:30:56 or it even included an unformatted date such as yesterday then your code would silently assume some order (that most likely has little to do with the actual order) and proceed. What it should do is notify the user (or the log file, ...) that some expectation was not met.

Tags:

Java

Date