2016-11-10 5 views
-3

У меня есть один строку даты в виде:Преобразование строки обратно в Java Дата

"Вс 18 сентября 00:05:35 GMT + 07: 00 +2016"

Я получаю этот формат из магазина Media Date Date. Как преобразовать его в объект Date в java/android?

+0

Вы имеете для использования класса [SimpleDateFormat] (https://developer.android.com/reference/java/text/SimpleDateFormat.html). –

+0

Это работало приятель? – Marat

+0

Поиск переполнения стека перед публикацией. Это уже сотни раз уже спрашивали. –

ответ

2

Дата в String может быть проанализирована в существующий объект даты с использованием класса SimpleDateFormat. Создав объект SimpleDateFormat и указав шаблон даты в своем конструкторе, вы сможете проанализировать дату, хранящуюся в строке.

Для вас частный случай код будет выглядеть следующим образом:

SimpleDateFormat format = new SimpleDateFormat("EEE MMM d HH:mm:ss z yyyy"); 

Date date = null; 
try { 
    date = format.parse(dateAsString); 
} catch (ParseException e) { 
    e.printStackTrace(); 
} 

Как видно из рисунка:

EEE - День недели в трех букв (например, Sun , пн, вт, ср, чт, пт, сб)

МММ - месяц года (от 0 до 11)

дд - день месяца

HH - час (между 00 и 23)

мм - минут (между 00 и 59)

сс - секунды (между 00 и 59)

z - TimeZone (в вашем случае, General Time Zone - GMT)

гггг - год

Кроме того, если вы в дальнейшем хотите передать этот Date объект в какой-то Calendar объекта вам нужно будет установить часовой пояс там тоже.

Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT+07:00")); 
calendar.setTime(date); 

Однако, если у вас есть TimeZone изменения, то вы можете извлечь TIMEZONE часть из строки:

String timeZone = dateAsString.substring(19, 28); 
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone(timeZone)); 
calendar.setTime(date); 

Просто будьте осторожны с запуском и заканчивающиеся индексов substring() функции

+0

какая строка формата для GMT + 07: 00 –

+0

@PraveenPandey Я обновил свой ответ. Взгляните на него и сообщите мне, если это сработает – Marat