【发布时间】:2018-03-07 13:12:03
【问题描述】:
我已经检查了有关以毫秒为单位转换时间的问题,并且我遵循了所有答案,但我仍然得到错误的小时数,尽管分钟和秒都可以。
在我的应用程序中,用户必须从TimePickerDialog 中选择一个时间并在文本视图中设置时间。例如,它将在时钟中显示 01:30。它会告诉我502125000222:30:00
我的代码TimePickerDialog:
TimePickerDialog timePickerDialog = new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
Calendar mycalendar = Calendar.getInstance();
mycalendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
mycalendar.set(Calendar.MINUTE, minute);
mycalendar.set(Calendar.SECOND, 0);
long times = mycalendar.getTimeInMillis();
// hmsTimeFormatter is a method return time format
String timerRemaind = hmsTimeFormatter(times);
//tv_remaindertime is TextView
tv_remaindertime.setText(timerRemaind);
............
还有这个转换毫秒的hmsTimeFormatter方法:
private String hmsTimeFormatter(long milliSeconds) {
String hms = String.format("%02d:%02d:%02d",
TimeUnit.MILLISECONDS.toHours(milliSeconds),
TimeUnit.MILLISECONDS.toMinutes(milliSeconds) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(milliSeconds)),
TimeUnit.MILLISECONDS.toSeconds(milliSeconds) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(milliSeconds)));
return hms;
}
【问题讨论】:
-
仅供参考,麻烦的旧日期时间类,如
java.util.Date、java.util.Calendar和java.text.SimpleDateFormat现在是 legacy,被 java.time 类取代。见Tutorial by Oracle。
标签: java android time datetime-format milliseconds