2015-11-11 3 views
3

Давайте следующее:Java Дата не работает правильно

Date inDbDate = null; 

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); 

inDbDate = sdf.parse("2015-09-27 23:24:28.035"); 

Теперь, когда я выводить inDbDate я получаю следующее:

Sun Sep 27 23:24:28 EEST 2015 

Итак, если у меня есть две даты с миллисекунды разницы, не было бы способа узнать или показать его.

Как сравнить два дата с этим форматом - 2015-09-27 23: 24: 28.035?

+1

Результат - это только представление для людей, внутри, ваши миллисеки здесь. –

ответ

3

Если вы хотите сравнить две переменные Date, существуют некоторые методы, предоставляемые после(), before(), equals().

private void someMethod(){ 
    final String dateFormat = "yyyy-MM-dd HH:mm:ss.SSS"; 
    Date firstDate = new Date(); 
    Date secondDate = new Date(); 
    SimpleDateFormat sdf = new SimpleDateFormat(dateFormat); 
    try { 
     firstDate = sdf.parse("2015-09-27 23:24:28.035"); 
     secondDate = sdf.parse("2015-09-27 23:24:28.036"); 
    } catch (ParseException pe) { 
     pe.getMessage(); 
    } 
    if(firstDate.after(secondDate)) { 
     System.out.println("The first date is after the second date"); 
    } else{ 
     System.out.println("The first date is before the second date"); 
    } 

} 

Вы можете скопировать и вставить выше метод в вашей IDE, то попробуйте изменить время в переменных Дата и посмотреть, что результат, а также изменения проверки выполняется в, если заявление.

Если вы посмотрите на значения в одном из объектов Date в своем отладчике, вы увидите, что миллисекунды там, просто не показаны при распечатке в определенном формате.

+0

Вы должны добавить также случай, когда обе даты равны. – SubOptimal

1
1/ you should parse inDbDate with date format ==> inDbDate = sdf.parse("2015-11-11 23:24:28.035"); 

2/ you can now compare the two dates 

    if (inDbDate.compareTo(new Date()) > 0) { 
     System.out.println("inDbDate is after the current date !!"); 
    } 

3/ if you want to display, you format it 
System.out.println("current time = " + sdf.format(new Date()));