2013-10-09 57 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)返回“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

相关问题