Android 无法显示我的Textview1和Textview2之间的计算时差?
这是我的应用程序的屏幕截图,其中的时间为00:57:18,超时时间为14:14:21。应自动计算时间差,结果将以红色圆圈的总行程小时数显示 你认为我需要改变我的编码什么才能使输出正确地显示总小时数的差异谢谢你 这是我的密码 FormTimeOut.javaAndroid 无法显示我的Textview1和Textview2之间的计算时差?,android,java-time,Android,Java Time,这是我的应用程序的屏幕截图,其中的时间为00:57:18,超时时间为14:14:21。应自动计算时间差,结果将以红色圆圈的总行程小时数显示 你认为我需要改变我的编码什么才能使输出正确地显示总小时数的差异谢谢你 这是我的密码 FormTimeOut.java String date_n = new SimpleDateFormat("MM/dd/yyyy", Locale.getDefault()).format(new Date()); TextView date = (Te
String date_n = new SimpleDateFormat("MM/dd/yyyy",
Locale.getDefault()).format(new Date());
TextView date = (TextView) findViewById(R.id.editText_timei_timedate);
date.setText(date_n);
DisplayDateTime = (TextView) findViewById(R.id.editText_timei_out);
DisplayDateTimeStart = (TextView)
findViewById(R.id.editText_travel_start);
DisplayDateTimeTotal = (TextView)
findViewById(R.id.editText_travel_total);
BTN = (Button) findViewById(R.id.button1);
calander = Calendar.getInstance();
simpledateformat = new SimpleDateFormat("HH:mm:ss");
Date = simpledateformat.format(calander.getTime());
simpledateformat2 = new SimpleDateFormat("HH:mm:ss");
Date2 = simpledateformat2.format(calander.getTime());
BTN.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick (View v){
DisplayDateTime.setText(Date);
DisplayDateTimeStart.setText(Date2);
try {
Date oldDate = (java.util.Date)
simpledateformat2.parse(String.valueOf(simpledateformat));
Date currentDate = new Date();
long diff = currentDate.getTime() - oldDate.getTime();
long seconds = diff / 1000;
long minutes = seconds / 60;
long hours = minutes / 60;
if (oldDate.before(currentDate)) {
DisplayDateTimeTotal.setText("hours:" + hours + "minutes:" + minutes);
}
// Log.e("toyBornTime", "" + toyBornTime);
} catch (ParseException e) {
e.printStackTrace();
}
}
});
我认为您需要的是在下面的文本视图中显示时间差。希望下面的代码有助于澄清您的疑问
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm:ss");
date1 = simpleDateFormat.parse("00:57:18");
date2 = simpleDateFormat.parse("14:14:21");
long difference = date2.getTime() - date1.getTime();
hours = (int) ((difference - (1000*60*60));
min = (int) (difference - (1000*60*60*hours)) / (1000*60);
sec = (int) (difference - (1000*60*60*hours)) - (1000*60*min)) / (1000);
hours = (hours < 0 ? -hours : hours);
String totalTime = String.valueOf(hours) + ":" + String.valueOf(min) + ":" + String.valueOf(sec);
DisplayDateTimeTotal.setText(totalTime);
对于时间计算,我使用了以下方法:
long difference = date2.getTime() - date1.getTime();
days = (int) (difference / (1000*60*60*24));
hours = (int) ((difference - (1000*60*60*24*days)) / (1000*60*60));
min = (int) (difference - (1000*60*60*24*days) - (1000*60*60*hours)) / (1000*60);
您可以使用以下代码将文本转换为日期对象
DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
Date dateObject;
try{
String dob=(tx.getText().toString());
dateObject = formatter.parse(dob);
date = new SimpleDateFormat("dd/MM/yyyy").format(dateObject);
}
是的,这就是我想要的,但是我不知道如何在文本视图中显示结果?我如何调用TestVIEW中的结果?我已经更新了答案,现在TeTVIEW会显示结果,顺便考虑一下扔掉那些过时的、臭名昭著的简单的格式和朋友,然后添加到Android项目中,以便使用JavaTime,现代java日期和时间API。它使用起来非常好,而且对计算两次之间的差异也有更好的支持。对于堆栈溢出问题,可能会重复很多代码。请训练.@OleV.V.好的,我将编辑我的问题,以尽量减少编码,这样其他人就不会感到困惑。事实上,我现在很沮丧,我找不到这个问题的解决方案,你知道我成功地在文本视图中显示了计算结果,但这是不正确的,我得到了错误的答案