2017-01-23 6 views
1

Привет всем Я использовал бутстрап даты выбора времени, чтобы сохранить дату и время, когда я выбираю дату в jsp. я получаю дату и время в виде строки в классе Java, как этот 23 января 2017 - 02:50 вечера пытаюсь преобразовать это на сегодняшний день не работает, где мне нужно изменитьКак преобразовать строку и дату в java

$(function() {  
    $('#datetimepicker8').datetimepicker({   
     startDate: new Date(), 
     format : 'dd MM yyyy - HH:ii p', 
     autoclose: 1, 
    }).on('changeDate', function(e) { 
     // Revalidate the date field 
     $('#timeTableUpdateForm').bootstrapValidator(
     'revalidateField', 'examDate'); 
    }); 
}); 

.

public class StringToDate { 
    public static void main(String[] args) { 
     SimpleDateFormat formatter = 
     new SimpleDateFormat("dd MMMM yyyy-HH:mm:ss a"); 
     String dateInString = "23 January 2017 - 02:50 pm"; 
     try { 
     Date date = formatter.parse(dateInString); 
     System.out.println(date); 
     System.out.println(formatter.format(date)); 
     } 
     catch(ParseException e) { 
     e.printStackTrace(); 
     } 
    } 
} 
+0

В дополнение к ниже ответы, то, как представляется, в зависимости от языка получает ли он разбирается или нет. Beeing German он работал только при использовании 'Januar' вместо' January'. – geisterfurz007

ответ

1

Вот рабочий код:

public static void main(String[] args) { 
     final SimpleDateFormat formatter = 
     new SimpleDateFormat("dd MMMMM yyyy - HH:mm a", Locale.US); 
     final String dateInString = "23 January 2017 - 02:50 pm"; 
     try { 
     final Date date = formatter.parse(dateInString); 
     System.out.println(date); 
     System.out.println(formatter.format(date)); 
     } 
     catch(final ParseException e) { 
     e.printStackTrace(); 
     } 
    } 

С этого выхода:

Mon Jan 23 02:50:00 CET 2017 
23 January 2017 - 02:50 AM 
+0

Пн 23 января 00:00:00 IST 2017 для этой даты.getYear не работает –

+0

Пожалуйста, дайте значение dateInString для разобрать. – Aubin

1

Две ошибки здесь:

  1. Пространства между отсутствующим годом и тиром - тиром и часом
  2. Вы говорите Java для разбора секунд, но вы не имеете секунды в вашей дате строка.

Вы должны изменить свой SimpleDateFormat от

SimpleDateFormat formatter = new SimpleDateFormat("dd MMMM yyyy-HH:mm:ss a"); 

Для

// Added two spaces and removed seconds from format, added Locale 
SimpleDateFormat formatter = new SimpleDateFormat("dd MMMM yyyy - HH:mm a", Locale.US); 
//               ^^ ^

Изменяя ваш код таким образом я получаю этот выход:

Mon Jan 23 02:50:00 GMT 2017 
23 January 2017 - 02:50 AM 

DEMO

+0

', Locale.US' следует добавить в' SimpleDateFormat' ctor при выполнении в неамериканском os – Aubin

Смежные вопросы