#android #facebook #date
#Android #Facebook #Дата
Вопрос:
я создаю приложение facebook и получаю update_date = 2011-03-23T04: 30: 43 0000 в этом формате, теперь я хочу, чтобы время назад было таким же, как facebook в браузере с этой даты.. я использую форматирование даты, утром он работает нормально, но после 5.30 он не работает нормально. я думаю, что это проблема в GMT, но я не могу найти какое-либо решение, поэтому, пожалуйста, помогите мне…
заранее спасибо.. CapDroid.
Я использую этот код… где str = 2011-03-23T04:30:43 0000
static public String dateformate(String str)
{
SimpleDateFormat form = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss SSSS");
java.util.Date date = null;
try
{
date = form.parse(str);
}
catch (ParseException e)
{
e.printStackTrace();
}
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("India"),Locale.getDefault());
calendar.set(Calendar.DATE,date.getDate());
calendar.set(Calendar.MONTH,date.getMonth());
calendar.set(Calendar.YEAR, date.getYear() 1900);
calendar.set(Calendar.HOUR,date.getHours());
calendar.set(Calendar.MINUTE,date.getMinutes());
calendar.set(Calendar.SECOND,date.getSeconds());
final long current = System.currentTimeMillis();
final long update = calendar.getTimeInMillis();
final long timeago = Math.abs(current-update);
if(timeago<=60000)
{
int time = (int)(timeago/1000);
return Integer.toString(time) " seconds ago";
}
else if(timeago<=3600000 amp;amp; timeago>=60000)
{
int time = (int)(timeago/60000);
return Integer.toString(time) " minutes ago";
}
else if(timeago<=86400000 amp;amp; timeago>=3600000)
{
int time = (int)(timeago/3600000);
return Integer.toString(time) " hour ago";
}
}
Ответ №1:
Если я правильно понял, вы хотите сообщить своим пользователям, как давно была сделана какая-либо публикация?
Почему бы не преобразовать временную метку, которую вы получаете от Facebook, в временную метку unixtime и работать с разницей с текущей временной меткой?
private static long convertDateToUnixTimeStamp(Date date) {
return date.getTime() / 1000L;
}
Комментарии:
1. да, вы правы, но на самом деле моя проблема в том, что до 17:30 вечера он работает нормально, но после 17:30 вечера он не работает нормально
2. хорошо. но если вы преобразуете его в временную метку unixtime, вы должны получить правильные моменты времени. 🙂
3. хорошо, и ваш код работает, если System.currentTimeMillis() запускается до 17:30 вечера?!
4. да …. после 5.30 я получаю отрицательное значение timeago, например, -213132, это просто пример..
Ответ №2:
попробуйте этот фрагмент кода
Calendar calendar = Calendar.getInstance();
TimeZone timezone = TimeZone.getDefault();
TimeZone utcTimeZone = TimeZone.getTimeZone("UTC");
int currentGMTOffset = timezone.getOffset(calendar.getTimeInMillis());
int gmtOffset = utcTimeZone.getOffset(calendar.getTimeInMillis());
calendar.setTimeInMillis(calendar.getTimeInMillis() (gmtOffset - currentGMTOffset));
final long current = calendar.getTimeInMillis();
// final long update = calendar.getTimeInMillis();
final long update = date.getTime();
final long timeago = Math.abs(current-update);