2013-10-03 9 views
-1

Я должен струны, как этотПреобразование строки в DATETIME

Thu Oct 03 07:47:22 2013 
Mon Jul 05 08:47:22 2013 

Я хочу, чтобы сравнить эти даты, я использую SimpleDateFormat("EEE MMM dd HH:mm:ss yyy"), но это дает мне исключение: java.text.ParseException: Unparseable date:

Пожалуйста, помогите мне решить эту проблему !

+0

Дайте нам код ... Как вы сравнивая даты? – Renjith

+1

'EEE MMM dd HH: mm: ss yyyy' one extra y, это проблема? –

+0

Этот рисунок в порядке. Можете ли вы показать нам код? –

ответ

1

Вы упускаете в y за год:

EEE MMM dd HH:mm:ss yyyy 

но вы должны использовать более надежную библиотеку, org.jodatime.

import org.joda.time.format.DateTimeFormat; 
import org.joda.time.DateTime; 

DateTimeFormat format = DateTimeFormat.forPattern("EEE MMM dd HH::mm:ss yyyy"); 
DateTime time = format.parseDateTime("Thu Oct 03 07:47:22 2013"); 
+0

Будет работать отлично с 'yyy'. –

+0

Вы пробовали с yyy? – Renjith

0

Вы пропустили y в формате. 4 y были необходимы для года (хотя он может работать нормально с yyy, его лучше использовать yyyy, так как это сделает ваш формат более удобным для чтения). И чтобы получить объект DateTime, вы можете использовать объект Date, который вы получите путем разбора строки, чтобы построить свой DateTime.

попробовать что-то вроде этого: -

String str = "Thu Oct 03 07:47:22 2013"; 
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss yyyy"); // You missed a y here. 
try { 
    Date d = sdf.parse(str); 
    DateTime dt = new DateTime(d.getTime()); // Your DateTime Object. 
} catch (ParseException e) { 
    // Parse Exception 
} 
+0

Будет работать отлично с 'yyy'. –

+0

Вы пытались с yyy? – Renjith

+0

@ RohitJain, Renjith- Ну, это может работать и с 'yyy', но' yyyy', безусловно, улучшит читаемость. – SudoRahul

0

это полный пример для сравнения даты

import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Calendar; 
import java.util.Date; 

public class dateCompare 
{ 
    public static void main(String[] args) 
    { 
     try{ 

      SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss yyy"); 
      Date date1 = sdf.parse("Thu Oct 03 07:47:22 2013"); 
      Date date2 = sdf.parse("Mon Jul 05 08:47:22 2013"); 

      System.out.println(sdf.format(date1)); 
      System.out.println(sdf.format(date2)); 

      Calendar cal1 = Calendar.getInstance(); 
      Calendar cal2 = Calendar.getInstance(); 
      cal1.setTime(date1); 
      cal2.setTime(date2); 

      if(cal1.after(cal2)){ 
       System.out.println("Date1 is after Date2"); 
      } 

      if(cal1.before(cal2)){ 
       System.out.println("Date1 is before Date2"); 
      } 

      if(cal1.equals(cal2)){ 
       System.out.println("Date1 is equal Date2"); 
      } 

     }catch(ParseException ex){ 
      ex.printStackTrace(); 
     } 
    } 
} 

выход

Thu Oct 03 07:47:22 2013 
Fri Jul 05 08:47:22 2013 
Date1 is after Date2 

это скриншот с кодом и выходом enter image description here

+0

То же самое исключение для вашего кода – user2842269

+0

@ user2842269 Просто скопируйте весь код и запустите его. Я только что протестировал его на своем компьютере и отправил ответ с выходом. Я думаю, что формат, который я использую в своем ответе, может отличаться от того, который вы пытаетесь. Просто используйте тот же формат, который вы разместили в вопросе. Если у вас есть другой формат, дайте мне знать, и я изменю свой ответ соответственно. – SpringLearner

+0

Я просто скопируйте свой код и запустите – user2842269

0

попробовать с помощью этого метода

public static Date formatStringToDate(String strDate) throws ModuleException { 
    Date dtReturn = null; 
    if (strDate != null && !strDate.equals("")) { 
     int date = Integer.parseInt(strDate.substring(0, 2)); 
     int month = Integer.parseInt(strDate.substring(3, 5)); 
     int year = Integer.parseInt(strDate.substring(6, 10)); 

     Calendar validDate = new GregorianCalendar(year, month - 1, date); 
     dtReturn = new Date(validDate.getTime().getTime()); 
    } 
    return dtReturn; 
} 
Смежные вопросы