2015-12-08 2 views
0

Я получаю эту строку даты моего API: "2015-12-07T14:11:15.596Z"Android новообращенный UTC Дата местному часовому поясу

Но эта дата в формате UTC и я хочу, чтобы преобразовать его в местное время, как я могу это сделать?

Я попытался это:

try 
{ 
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); 
    return simpleDateFormat.parse(this.created_at); 
} 
catch (ParseException e) 
{ 
    Log.e("Error Date at Whisp", e.getMessage()); 
    return null; 
} 

Но вернуть мне эту ошибку:

Unparseable date: "2015-12-07T13:21:17.996Z" (at offset 10) 
+0

Пожалуйста поиск StackOverflow перед публикацией. Эти темы разбора строк даты, «ParseException' /« Unparseable »и настройки часовых поясов были покрыты уже много раз. –

+0

FYI, неприятные старые классы времени, такие как ['java.util.Date'] (https://docs.oracle.com/javase/8/docs/api/java/util/Date.html), [ 'java.util.Calendar'] (https://docs.oracle.com/javase/8/docs/api/java/util/Calendar.html) и' java.text.SimpleDateFormat' теперь [наследие] (https://en.wikipedia.org/wiki/Legacy_system), вытесненный [java.time] (https://docs.oracle.com/javase/8/docs/api/java/time/package-summary. html). См. [Учебное пособие по Oracle] (https://docs.oracle.com/javase/tutorial/datetime/TOC.html). –

ответ

2

Ваш формат Формат даты неправильный. Изменить на:

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.S'Z'"); 

Для получения дополнительной информации см Javadoc из SimpleDateFormat

+0

Я пробовал это, но даю мне, что «Непревзойденная дата:« 2015-12-07T13: 21: 17.996Z »(при смещении 11)», ему не нравится «Т», я думаю, – JohnyBro

+0

@JohnyBro У вас есть сиглектоны вокруг 'T'? – Jens

+0

Да, "yyyy-MM-dd'T 'HH: mm: ss.S'Z'" – JohnyBro

1

T и Z находятся не в вашей маске

Либо

created_at = created_at.replace ("T", "").replace ("Z", ""); 

или modifiy ваша маска

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