2013-05-03 3 views
-2

Мне нужна интернационализированная строка, которая описывает сравнение между прошлым или будущим объектом Date и текущей датой. Так что-то вроде ..Android String за прошедшее время

  • 45 минут назад.
  • 3 дня, 6 часов назад.
  • Осталось 3 часа.
  • 6 дней осталось.

Я посмотрел на DateUtils класс, который имеет getRelativeTimeSpanString(), но это показывает время в форматы, такие как ..

  • в 2-х дней.
  • 6 марта.
  • через 3 часа.

Есть ли альтернативные библиотеки, с которыми кто-то сталкивался, которые поддерживают этот тип вещей, в идеале интернационализированный.

+0

что вы еще пробовали? –

+1

см. Ответ и комментарий http://stackoverflow.com/a/3859298/276263 – krishnakumarp

+0

Библиотека PrettyTime - это то, что мне нужно! Благодарю. –

ответ

2

Посмотрите на этот код. это поможет вам.

private String getPostDuration(String str_date) { 
      // TODO Auto-generated method stub 
      try { 
       //String str_date = "10-Aug-2011 21:20:00"; 
       SimpleDateFormat formatter; 
       Date date; 
       //formatter = new SimpleDateFormat("dd/MMM/yyyy hh:mm:ss"); 
       formatter = new SimpleDateFormat("yyyy/MMM/dd HH:mm:ss"); 

       date = (Date) formatter.parse(str_date); 
       //System.out.println("Today is " + date); 
       //System.out.println(date); 

       Date currentDate=new Date(); 
       //System.out.println(currentDate); 


       long diff = currentDate.getTime() - date.getTime(); 

//    System.out.println("The 21st century (up to " + today + ") is " 
//     + (diff/(1000 * 60 * 60 * 24)) + " days old."); 



       if ((diff/(1000 * 60 * 60 * 24)>0)) { 
        // System.out.println((diff/(1000 * 60 * 60 * 24)) + " days ago"); 
        return (diff/(1000 * 60 * 60 * 24)) + " days old."; 
       } 
       else if((diff/(1000 * 60 * 60)>0)){ 
        //System.out.println((diff/(1000 * 60 * 60)) + " hours ago"); 
        return (diff/(1000 * 60 * 60)) + " hours ago"; 
       } 
       else if ((diff/(1000 * 60)>0)) 
        { 
        //System.out.println((diff/(1000 * 60)) + " minutes ago"); 
        return (diff/(1000 * 60 )) + " minutes ago"; 
       } 
       else// if ((diff/(1000)>0)) 
       { 
        //System.out.println((diff/(1000)) + "less than a minute ago"); 
        return "less than a minute ago"; 
       } 

      } catch (ParseException e) { 
       //System.out.println("Exception :" + e); 
       return ""; 
      } 
     } 
+0

Спасибо за это, но важно, чтобы он поддерживал интернационализацию. –

Смежные вопросы