Java 通过在android中将两个字符串转换为日期格式来实现时间差
我必须找出两个字符串值之间的时间差。我在我的应用程序中使用了以下代码Java 通过在android中将两个字符串转换为日期格式来实现时间差,java,android,Java,Android,我必须找出两个字符串值之间的时间差。我在我的应用程序中使用了以下代码 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 = for
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;
}
这是一个函数,它接受我的两个字符串并返回一个字符串(Time Diff),我可以在类中使用它。但当我点击按钮调用此函数时,我的应用程序强制关闭
这是日志
流程:mypackage.com.work,PID:3551
java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“java.lang.String mypackage.com.work.UpdateTracker.diff(java.lang.String,java.lang.String)”
在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(ActivityThread.java:5221)
位于java.lang.reflect.Method.invoke(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:372)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)`
下面是调用该函数的代码
String in_db=txtTime.getText().toString();
String out_db=txtTime2.getText().toString();
String d=up.diff(in_db,out_db);
如果我只是对此进行注释并插入一个硬编码字符串,那么它就可以正常工作了!。所以我认为DB代码没有问题
帮我弄清楚这个
提前感谢试试这个。您可以将时间保存和检索为字符串:
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();
}
我希望这会有帮助。你能发布崩溃日志吗?它没有显示日志。我甚至试过使用Log.v和Log.d,但那部分是空的。以前它工作得很好。我如何才能再次启用?你能在_db中打印,输出_db这些吗?你传递的字符串的格式与指定的不同如果是,那么应该是什么格式?你能发布它吗