【发布时间】:2014-03-19 09:39:11
【问题描述】:
我正在尝试计算两个时间变量之间的时间差。第一个变量设置如下:
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... 类似的东西。我调试了一下,发现“d2”中的数据值是在1970年设置的。如何解决这个问题并以秒为单位正确计算差异?
【问题讨论】:
-
我的猜测是你得到了那个日期,因为默认日期是 1970 年 1 月 1 日,所以你正在用那个日期和你设定的时间创建一个日期对象。
-
是的,如何将日期设置为今天的日期
标签: android time dialog datetimepicker