Java simpledateformat转换24小时到分钟

Java simpledateformat转换24小时到分钟,java,android,parsing,Java,Android,Parsing,我想将24小时时间(例如0748或748)转换为分钟。出于某种原因,它将其转换为仅128分钟,而本应为468分钟 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

我想将24小时时间(例如0748或748)转换为分钟。出于某种原因,它将其转换为仅128分钟,而本应为468分钟

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
作为分钟数。插入此代码可以揭示发生了什么

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 07:48:00
也就是说纪元过去3天2小时8分钟(1970-01-01 00:00:00),也就是74小时8分钟

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;
date\u time\u to\u minutes
的声明成功,可能是因为我添加了前导“0”

输出:

1970-01-04 02:08:00
1970-01-01 07:48:00
解决方案是,如果小时值小于10,则确保前导零

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

你错过了300分钟=5小时。考虑时区。@pyb不正确。如果这是真的,那么输出将是168(2小时48分钟)。