我正在尝试计算两个时间变量之间的时差。第一个变量设置如下:
Time StartTime = new Time();
StartTime.setToNow();
使用时间选择器设置第二个变量,用户可以在其中设置小时和分钟:
我的时间选择了对话框代码:
//Time Picker Dialog
Date d2 = null;
protected Dialog onCreateDialog(int id)
{
switch(id)
{
case dialog_id:
final Calendar c = Calendar.getInstance();
hour = c.get(Calendar.HOUR_OF_DAY);
minute = c.get(Calendar.MINUTE);
return new TimePickerDialog(this, mTimeSetListener, hour, minute, true);
}
return null;
}
private TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int hour_minute)
{
hour = hourOfDay;
minute = hour_minute;
textBox.setText(hour + " : " + minute);
updateTime(hour, minute);
}
};
//fixing the "0" removal
private void updateTime(int hours, int mins)
{
String minutes = "";
if (mins < 10)
minutes = "0" + mins;
else
minutes = String.valueOf(mins);
String aTime = new StringBuilder().append(hours).append(':').append(minutes).append(':').append("00")
.append(" ").toString();
textBox.setText(aTime);
SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss",Locale.getDefault());
try
{
d2 = format.parse(aTime);
} catch (ParseException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
final long difference = d2.getTime() - StartTime.toMillis(true);
diffMinutes = difference / 1000;
Toast.makeText(getBaseContext(), "Arrival time changed to: " + aTime, Toast.LENGTH_LONG).show();
}
我想知道开始时间和D2(aTime)之间有什么区别,但我得到了一个否定的答案 - 1649478203 ......就是这样。我调试了它,看到了&#34; d2&#34;中的数据值。是在1970年设置的。如何解决这个问题并在几秒钟内正确计算差异?
答案 0 :(得分:0)
您可以尝试使用GregorianCalendar类而不是Date格式。使用this构造函数,获取今年,月和日的今天日期。您可以将秒数设置为零。
答案 1 :(得分:0)
找到答案我必须更新我的更新时间方法。这是我改变的:
//fixing the "0" removal
private void updateTime(int hours, int mins)
{
String minutes = "";
if (mins < 10)
minutes = "0" + mins;
else
minutes = String.valueOf(mins);
String aTime = new StringBuilder().append(hours).append(':').append(minutes)
.append(" ").toString();
textBox.setText(aTime);
long currentTime = System.currentTimeMillis();
calendar = Calendar.getInstance();
calendar.setTimeInMillis(currentTime);
calendar.set(Calendar.HOUR_OF_DAY, pickedHour);
calendar.set(Calendar.MINUTE, pickedMinute);
final long difference = calendar.getTimeInMillis() - StartTime.toMillis(true);
diffMinutes = difference / 1000;
Toast.makeText(getBaseContext(), "Arrival time changed to: " + aTime, Toast.LENGTH_LONG).show();
}