将 24 小时时间转换为分钟的简单日期格式

simpledateformat coverting 24hr time to minutes

我想转换 24 小时制,例如0748 或 748,转换成分钟。出于某种原因,它在本应为 468 分钟的情况下将其转换为仅 128 分钟。

double time = 748;
//parse time into SimpleDateFormat to easily extract hours and minutes
Date date_time_to_minutes = new SimpleDateFormat("HHmm").parse(String.valueOf(time));
//hours extracted from time
double extracted_hours = Integer.parseInt(new SimpleDateFormat("HH").format(date_time_to_minutes));
//minutes extracted from time
double extracted_minutes = Integer.parseInt(new SimpleDateFormat("mm").format(date_time_to_minutes));
//converts the extracted hours into minutes and adds it to the extracted minutes
double minutes = extracted_hours * 60 + extracted_minutes;

HHmm 日期格式不是 7,而是 74 作为小时数,8.0 作为分钟数。插入这段代码揭示了正在发生的事情。

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf.format(date_time_to_minutes));

输出:

1970-01-04 02:08:00

即纪元 (1970-01-01 00:00:00) 后 3 天 2 小时 8 分钟,a.k.a。 74小时8分钟。

这个 date_time_to_minutes 的声明成功了,大概是因为我添加了前导“0”。

Date date_time_to_minutes = new SimpleDateFormat("HHmm").parse("0748");

输出:

1970-01-01 07:48:00

解决方案是确保小时值小于 10 时有前导零。

Date date_time_to_minutes = new SimpleDateFormat("HHmm").parse(
  new DecimalFormat("0000").format(time)
);