两个字符串之间的时间差,通过在android中将其转换为日期格式



我必须找到两个String值之间的时间差。我在我的应用程序中使用了以下代码

public String diff(String first,String last)
{
    SimpleDateFormat format = new SimpleDateFormat("hh:mm:ss aa");
    Date  d1 = null;
    Date d2 = null;
    try {
        d1 = format.parse(first);
        d2 = format.parse(last);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    long diff = d2.getTime() - d1.getTime();
    int diffMinutes = (int)diff / (60 * 1000);
    int diffHours = (int)diff / (60 * 60 * 1000);
    String res=Integer.toString(diffHours);
    String res1=Integer.toString(diffMinutes);
    String fin= res+res1;
    return fin;
}

这是一个函数,它接受我的两个String并返回一个String(Time Diff),我可以在类中使用它。但当我点击按钮调用此函数时,我的应用程序强制关闭。

这是日志!

进程:mypackage.com.work,PID:3551java.lang.NullPointerException:尝试对null对象引用调用虚拟方法"java.lang.String mypackage.com.work.UpdateTracker.diff(java.lang.Sstring,java.lang.Sring)"位于mypackage.com.work.UpdateTracker.onClick(UpdateTracker.java:138)在android.view.view.performClick(view.java:4756)在android.view.view$PerformClick.run(view.java:19749)在android.os.Handler.handleCallback(Handler.java:739)在android.os.Handler.dispatchMessage(Handler.java:95)在android.os.Looper.loop(Looper.java:135)在android.app.ActivityThread.main(ActivityThreads.java:5221)位于java.lang.reflect.Method.ioke(本机方法)位于java.lang.reflect.Method.ioke(Method.java:372)网址:com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)网址:com.android.internal.os.ZygoteInit.main(ZygoteNit.java:694)`

这是调用函数的代码

         String in_db=txtTime.getText().toString();
            String out_db=txtTime2.getText().toString();
            String d=up.diff(in_db,out_db);

如果我只是评论这个并插入一个硬编码的字符串,它就可以正常工作了!。所以我认为DB代码没有问题

帮我弄清楚!!

提前感谢

试试这个。您可以将时间保存并检索为String:

String to long: String.valueOf()
long to String: Long.valueOf()

使用以下程序计算差异:

//Time checker
private String timeCheck(long startTimeInput, long endTimeInput) {
    long millis = endTimeInput - startTimeInput;
    int seconds = (int) (millis / 1000);
    int minutes = seconds / 60;
    int hours = minutes / 60;
    return "Hours: "+hours+" minutes: "+minutes+" seconds: "+seconds;
}

在你的主程序中,这样称呼它:

String start = "Tue Apr 23 16:08:28 GMT+05:30 2015";
String end = "Tue Apr 23 18:12:30 GMT+05:30 2015";
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
try {
    Date mDateStart = sdf.parse(start);
    Date mDateEnd = sdf.parse(end);
    long timeInMillisStart = mDateStart.getTime();
    long timeInMillisEnd = mDateEnd.getTime();
    Log.d(LOG_TAG,"The difference is "+timeCheck(timeInMillisStart,timeInMillisEnd));
} catch (ParseException e) {
    e.printStackTrace();
}

我希望它能有所帮助。

最新更新