Я показываю сообщения 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 правильно работал для часового пояса текущего пользователя, независимо от того, где он находится?