2013-10-09 7 views
1

Я изучаю формат даты и времени в android, я хочу попытаться преобразовать дату и время как временную шкалу ...? пример:Как конвертировать дату и время, как временная шкала в Android?

String current_date = "2013-10-07 20:57:20"; 

String val_date1 = "2013-10-07 20:57:20"; 
String val_date2 = "2013-10-07 19:57:20"; 
String val_date3 = "2013-10-07 17:57:20"; 
String val_date4 = "2013-09-07 20:57:20"; 

выше даты и отрегулированы CURRENT_DATE преобразованы и результаты, такие как эти:

String val_date1_after_formated = "just now"; 
String val_date2_after_formated = "1h"; 
String val_date3_after_formated = "3h"; 
String val_date4_after_formated = "1d"; 

как преобразовать дату с программой? Надеюсь, кто-нибудь может мне помочь. Извините, если мой английский не очень хорош ...

ответ

3

Здесь функция, которая должна сделать работу

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); 
int[] steps = {1,60,3600,3600*24}; 
String[] names = {"seconds","minutes","hours","days"}; 

//... 

public String formatDelay(String date){ 
    try { 
     Date d = sdf.parse(date); 
     Long stamp = d.getTime()/1000; 
     Long now = System.currentTimeMillis()/1000;   
     Long dif = now - stamp; 

     if(stamp > now) return ""; 

     for(int i=0;i<steps.length;i++){ 
      if(dif<steps[i]){ 
       String output = Long.toString(dif/steps[i-1])+" "+names[i-1]; 
       return output; 
      } 
     }  

     return Long.toString(dif/steps[3])+" "+names[3]; 


    } catch (Exception e){ 
     e.printStackTrace(); 
     return ""; 
    } 
+0

спасибо человеку, это другое решение, но это работа :) .. еще раз спасибо ... – bukanamay

+1

@bukanamay добро пожаловать xD – lelloman

+0

Отлично работает, если вы добавите чек на 0 (0-999 мс) if (dif == 0) return «0s»; чуть ниже штампа> сейчас или измените штамп> теперь на печать> = теперь в зависимости от того, что вы хотите – richardwiden

0

Не уверен, что это то, что вы ищете, но чтобы использовать текущее время. Возвращает в миллисекундах.

System.currentTimeMillis()/1000L; 

Чтобы отформатировать его до момента времени, используйте этот код.

long loadDate = System.currentTimeMillis()/1000L; 
String dateString = new SimpleDateFormat("MM/dd/yyyy").format(new Date(loadDate)); 
+0

спасибо человеку ... Я буду стараться :) – bukanamay

1

formatDuration может быть хорошо для этого:

public String getDuration(long time) { 
    StringBuilder sb = new StringBuilder(); 
    android.support.v4.util.TimeUtils.formatDuration(System.currentTimeMillis() - date, sb); 
    return sb.toString(); 
} 

Теперь, чтобы получить long time вам нужно разобрать даты ввода (возможно, с помощью SimpleDateFormat).

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US); 
long date = sdf.parse("2013-10-07 20:57:20").getTime(); 
String duration = getDuration(date); 
+0

спасибо человеку ... Я буду стараться :) – bukanamay

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