Как я могу преобразовать сообщение created_time в facebook в часовой пояс пользователя?

Я показываю сообщения Facebook в своем приложении для Android с помощью Facebook SDK . У меня есть created_time для каждого сообщения в формате:

2012-01-04T12:28:52+0000

Я смог проанализировать это в объект Java Date следующим образом:

public static final String DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss+SSSS";
public static Date parseDate(String str) {
    SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);

    try {
        Date date = sdf.parse(str);
    } catch(ParseException e) {
        Log.w(TAG, "Unable to parse date string \"" + str + "\"");
    }
    return date;
  }

Затем я пытаюсь отобразить сообщение, описывающее время, прошедшее с момента публикации сообщения создано с помощью этого метода:

public static String timeAgoInWords(Date from) {
    Date now = new Date();
    long difference = now.getTime() - from.getTime();
    long distanceInMin = difference / 60000;

    if ( 0 <= distanceInMin && distanceInMin <= 1 ) {
        return "Less than 1 minute ago";
    } else if ( 1 <= distanceInMin && distanceInMin <= 45 ) {
        return distanceInMin + " minutes ago";
    } else if ( 45 <= distanceInMin && distanceInMin <= 89 ) {
        return "About 1 hour";
    } else if ( 90 <= distanceInMin && distanceInMin <= 1439 ) {
        return "About " + (distanceInMin / 60) + " hours ago";
    } else if ( 1440 <= distanceInMin && distanceInMin <= 2529 ) {
        return "1 day";
    } else if ( 2530 <= distanceInMin && distanceInMin <= 43199 ) {
        return (distanceInMin / 1440) + "days ago";
    } else if ( 43200 <= distanceInMin && distanceInMin <= 86399 ) {
        return "About 1 month ago";
    } else if ( 86400 <= distanceInMin && distanceInMin <= 525599 ) {
        return "About " + (distanceInMin / 43200) + " months ago";
    } else {
        long distanceInYears = distanceInMin / 525600;
        return "About " + distanceInYears + " years ago";
    }
}

Проблема в том, что create_time сообщения на 6 часов опережает мое время (EST). Таким образом, метод timeAgoInWords работает некорректно. Всегда ли Facebook записывает время создания сообщений в формате UTC / GMT +1 час?

Что я могу сделать, чтобы преобразовать время создания, чтобы timeAgoInWords правильно работал для часового пояса текущего пользователя, независимо от того, где он находится?

9
задан mattgmg1990 4 January 2012 в 22:20
поделиться