2014-02-19 2 views
0

Я пытаюсь преобразовать строку в формат DateTime. Моя строка: 23 Feb 2014 14:00:48. Я хочу отправить на сервер в формате 2011-04-08T12:29:00.000Z.Android: конвертировать строку в Datetime format-parse error

Я делаю, как показано ниже

String str = departetforget.getText().toString(); 
     System.out.println("printing date"+str); 
     String TIMEZONE_DATE_TIME_FORMAT = "yyyy-MM-dd'T'HH:mm:ssz"; 
     try { 
      Date date = new SimpleDateFormat(TIMEZONE_DATE_TIME_FORMAT, Locale.US).parse(str); 
      System.out.println("printing parsed date "+date); 
     } catch (ParseException e) { 
      System.out.println("printing date Exception ==> "+e.toString()); 
      e.printStackTrace(); 
     } 

Но я получаю исключение синтаксического анализа.

+0

выглядит как перепечатывать из [этого] (http://stackoverflow.com/questions/2580925/simpledateformat-parsing -date-with-z-literal) – cosmincalistru

+0

Вы проверяете соблюдение формата шаблона? [Java SimpleDateFormat] (http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html) –

ответ

9

Попробуйте испытание рабочего примера

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     System.out.println("Converted Date : " + convertDate("23 Feb 2014 14:00:48")); 
    } 

    private String convertDate(String date) { 
     try { 
      SimpleDateFormat format = new SimpleDateFormat("dd MMM yyyy hh:mm:ss"); 
      Date d = format.parse(date); 
      SimpleDateFormat serverFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); 
      return serverFormat.format(d); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return ""; 
    } 

} 

выход:

Старинной Даты: 2014-02-23T14: 00: 48.000Z

0
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); 
      String newFormat = formatter.format(testDate); 

String date = "2011-11-12 16:05:06"; 
     SimpleDateFormat sdf = new SimpleDateFormat("yyyy/mm/dd HH:MM:SS"); 
     Date testDate = null; 
     try { 
      testDate = sdf.parse(date); 
     }catch(Exception ex){ 
      ex.printStackTrace(); 
     } 
     SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); 
     String newFormat = formatter.format(testDate); 
     System.out.println(".....Date..."+newFormat); 
2

Для преобразования строки даты требуется 2 SimpleDateFormats. Для примера:

String str = departetforget.getText().toString(); 
    String MY_FORMAT = "dd MMM yyyy HH:mm:ss"; 
    String TIMEZONE_DATE_TIME_FORMAT = "yyyy-MM-dd'T'HH:mm:ssz"; 
    try { 
     Date date = new SimpleDateFormat(MY_FORMAT, Locale.US).parse(str); 

     String timezoneString = new SimpleDateFormat(MY_FORMAT, Locale.US).format(date); 
    } catch (ParseException e) { 
     System.out.println("printing date Exception ==> "+e.toString()); 
     e.printStackTrace(); 

    } 
+0

Привет при преобразовании во второй раз i.e; String timezoneString, я думаю, нам нужно заменить его на TIMEZONE_DATE_TIME_FORMAT ..и он выдавал, но как 2014-02-19T14: 26: 58GMT + 05: 30, но мне не нужен GMT, я хочу, чтобы он был как 2011-04- 08T12: 29: 00.000Z – teekib

+0

Да, извините. Вам нужно заменить его на TIMEZONE_DATE_FORMAT. –

+0

Если вы не хотите использовать GMT 'Z' вместо 'z' –

0

Вы должны Разберите данную дату в правильном формате.

String TIMEZONE_DATE_TIME_PARSE="dd MMM yyyy HH:mm:ss"; 

А затем отформатировать его с SimpleDateFormat как sdf.format (дата)

String TIMEZONE_DATE_TIME_FORMAT = "yyyy-MM-dd'T'HH:mm:ssz"; 
Смежные вопросы