【发布时间】:2023-03-19 08:06:01
【问题描述】:
我有一个开始时间和结束时间的时间选择器。它在瑞典,所以这里是 24 小时制。如果我将开始时间设置为 23:00,结束时间设置为 02:00,则应该相差 3 小时。但在这种情况下,它是 22 小时。
我用这个来计算差异:
String a =""+Math.abs(diff/(60*60*1000)%24);
String b =""+Math.abs(diff/(60*1000)%60);
如何解决这个问题?
更新
这里还有一些代码:
DateFormat formatter = new SimpleDateFormat("HH:mm");
Date date1 = formatter.parse(str_time1);
Date date2 = formatter.parse(str_time2);
long diff = date2.getTime() - date1.getTime();
String a =""+Math.abs(diff/(60*60*1000)%24);
String b =""+Math.abs(diff/(60*1000)%60);
更新 2
这是我的时间选择器对话框,甚至可能从这里开始出现错误:
final Calendar c = Calendar.getInstance();
mHour = c.get(Calendar.HOUR_OF_DAY);
mMinute = c.get(Calendar.MINUTE);
// Launch Time Picker Dialog
final TimePickerDialog timePickerDialog = new TimePickerDialog(this,
new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay,
int minute) {
startworkFrom.setText(hourOfDay + ":" + minute);
}
}, mHour, mMinute, true);
timePickerDialog.show();
【问题讨论】:
-
我在这里没有发现任何错误。 startworkFrom.setText(hourOfDay + ":" + minute); 输出了正确的值吗?
-
如果我选择时间 00:00,我会得到 0:0,这是不对的。
-
顺便说一句,如果您可以通过简单的 int 比较简单地检查和比较时间,为什么还要使用 DateFormat 和 Date?只是好奇。
-
因为我不知道我能做到这一点。你知道我是个菜鸟。
-
哇...不知道。给我一些时间来找到一个示例代码检查时间之间的值...
标签: java android time difference