2017-06-16 34 views
-4

之间的时间或顺从要两次 之间找到差异我有两次12点十六分四十秒12时16分50秒。 我想要的区别是10秒如果差异以分钟为单位然后显示差异分钟或者如果差异以秒为单位然后显示差异等等。安卓发现扩孔两次

我想这样

2秒前

5分钟前

2小时前

Date date = new Date(); 
DateFormat formatter = new SimpleDateFormat("HH:mm:ss"); // Hours:Minutes:Seconds 
String dateFormatted = formatter.format(date); 
+0

所以你想显示一个以毫秒为单位的时间差异,这取决于差异的大小吗?使用一些if语句来区分这些情况。 – Henry

+1

[两次之间的时间差]的可能重复(https://stackoverflow.com/questions/15360123/time-difference-between-two-times) –

+0

发布之前的搜索堆栈溢出。这个主题已经被解决*很多次了。 –

回答

0

答案你好,你可以使用下面的代码这是我的例子鉴于您需要根据您的要求进行更改

try { 

       Calendar c2 = Calendar.getInstance(); 
       SimpleDateFormat df2 = new SimpleDateFormat("HH:mm:ss aa",Locale.US); 
       String formattedTime = df2.format(c2.getTime()); 
       date2 = df2.parse(formattedTime); 

       long mills = date2.getTime() - date1.getTime(); 


       int Hours = (int) (mills/(1000 * 60 * 60)); 
       int Minuets = (int) (mills/(1000*60)) % 60; 
       int Seconds = (int) (mills/1000) % 60; 

       String hr = String.format("%02d", Hours); 
       String min = String.format("%02d", Minuets); 
       String sec = String.format("%02d", Seconds); 


       endTime = hr + ":" + min + ":" +sec; // updated value every1 second 

      } catch (ParseException e) { 
       e.printStackTrace(); 
      } 

所以下面的功能您的问题用得到的答案,下面导入clases

import java.text.SimpleDateFormat; 
import java.util.Calendar; 
import java.util.Date; 

private void cluclate() 
{ 
    Date date1,date2; 

    try { 

     String endTime; 

     Calendar c1 = Calendar.getInstance(); 
     c1.add(Calendar.HOUR,12); 
     c1.add(Calendar.MINUTE,16); 
     c1.add(Calendar.SECOND,40); 
     SimpleDateFormat df1 = new SimpleDateFormat("HH:mm:ss", Locale.US); 
     String formattedTime1 = df1.format(c1.getTime()); 
     date1 = df1.parse(formattedTime1); 


     Calendar c2 = Calendar.getInstance(); 
     c2.add(Calendar.HOUR,12); 
     c2.add(Calendar.MINUTE,16); 
     c2.add(Calendar.SECOND,50); 
     SimpleDateFormat df2 = new SimpleDateFormat("HH:mm:ss",Locale.US); 
     String formattedTime2 = df2.format(c2.getTime()); 
     date2 = df2.parse(formattedTime2); 


     long mills = date2.getTime() - date1.getTime(); 


     int Hours = (int) (mills/(1000 * 60 * 60)); 
     int Minuets = (int) (mills/(1000*60)) % 60; 
     int Seconds = (int) (mills/1000) % 60; 

     String hr = String.format("%02d", Hours); 
     String min = String.format("%02d", Minuets); 
     String sec = String.format("%02d", Seconds); 


     endTime = hr + ":" + min + ":" +sec; // updated value every1 second 

     Log.d("=============>>>>",endTime); 

    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 
} 
+0

它不会正确计算秒 – Ahmad

+0

它的呕吐罚款我会张贴更新的答案 – Anil

+0

找到更新的答案并尝试 – Anil

0

试试这个:

long firstTime = System.currentTimeMillis(); 
    /* 
    your operations should do here 
    */ 
    long secondTime = System.currentTimeMillis(); 
    long difference = secondTime - firstTime; 
    Calendar calendar = Calendar.getInstance(); 
    calendar.setTimeInMillis(difference); 
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm:ss", Locale.GERMANY); 
    String yourDate = simpleDateFormat.format(calendar); 
0

使用下面的代码在一个可运行的,所以它不断检查。

Calendar c2 = Calendar.getInstance(); 
SimpleDateFormat df2 = new SimpleDateFormat("HH:mm:ss aa",Locale.US); 
String formattedTime = df2.format(c2.getTime()); 
date2 = df2.parse(formattedTime); 
//date1 is the first time, date2 is current time. 
long mills = date2.getTime() - date1.getTime(); 

int Hours = (int) (mills/(1000 * 60 * 60)); 
int Minuets = (int) (mills/(1000*60)) % 60; 
int Seconds = (int) (mills/1000) % 60; 

if(Hours == 0) { 
    if(Minutes == 0) { 
     displayString = Seconds.toString() + " ago"; 
    } else { 
     displayString = Minutes.toString() + " ago"; 
    } 
} else { 
    displayString = Hours.toString() + " ago"; 
} 
0

这可以很容易地使用DateUtils类来实现。

getRelativeTimeSpanString(long time, long now, long minResolution)

Calendar time = Calendar.getInstance(); 
time.set(Calendar.HOUR, 12); 
time.set(Calendar.MINUTE, 16); 
time.set(Calendar.SECOND, 40); 

Calendar now = Calendar.getInstance(); 
now.set(Calendar.HOUR, 12); 
now.set(Calendar.MINUTE, 16); 
now.set(Calendar.SECOND, 50); 
System.out.println(DateUtils.getRelativeTimeSpanString(time.getTimeInMillis(), now.getTimeInMillis(), DateUtils.SECOND_IN_MILLIS)); 

这也将是有效的,如果时间差在几分钟或几小时。

+0

如果我将设置时间 time.set(Calendar.HOUR,12); time.set(Calendar.MINUTE,16); time.set(Calendar.SECOND,40); Calendar now = Calendar.getInstance(); now.set(Calendar.HOUR,2); now.set(Calendar.MINUTE,11); now.set(Calendar.SECOND,50); 它会在10小时内返回 – Ahmad

+0

它取决于时间和现在的变量日期。 – BhalchandraSW