Преобразовать формат времени UTC в местное время

У меня есть время UTC в этом формате 2013-03-04T14:37:15 Как я могу преобразовать это в местное время, а затем в формат one minute ago.

Сначала я попробовал это, чтобы преобразовать время в локальный формат:

private String getDate(String date) {
        Date fDate = null;
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
        try {
            fDate = simpleDateFormat.parse(date);
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
return fDate.toString();
    }

Но приведенные выше функции выдают исключение, говорящее о неразборчивой дате.


person sukarno    schedule 19.03.2013    source источник


Ответы (2)


Исключение синтаксического анализа, которое вы получаете, связано с дополнительным T в вашей дате (2013-03-04T14:37:15).

Вы можете удалить эту дополнительную букву «T» и проанализировать дату в текущем формате даты,

Или, если вам нужно проанализировать его с помощью T, измените формат, чтобы также проанализировать литерал T,

new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
person RainMaker    schedule 19.03.2013
comment
Теперь работает нормально, я получаю отформатированную дату следующим образом: Mon 04 Mar 20:07:15 GMT+05:30 2013, как я могу изменить это на желаемый формат, например: yyyy-mm-dd 16:30 - person sukarno; 19.03.2013

Проверьте DateUtils.getRelativeTimeSpanString( ) (один одноименный метод из DateUtils). Это будет что-то вроде:

Date fDate = null;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
fDate = simpleDateFormat.parse(date);
return DateUtils.getRelativeTimeSpanString(context, System.currentTimeMillis()-fDate.getTime())'
person stefan.nsk    schedule 19.03.2013