проблема с датой facebook

#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);