我有一个像08:25这样的字符串时间格式,现在该如何转换为浮动时间值
String guestclosetime = getCurrentTime();
SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm");
timeFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
try {
System.out.println("starttime"+ TestRideFragment.getCurrentTime());
// convert12to24format(guestclosetime);
Date date1 = timeFormat.parse("00:20");//run
Date date2 = timeFormat.parse(guestclosetime);
//Date date3=timeFormat.parse(idle_time);
long sum = date1.getTime() + date2.getTime();
String date3 = timeFormat.format(new Date(sum));
System.out.println("The sum is "+date3);// 08:28
现在我需要把date3作为float,我该如何在android中做。
请参阅我的情景,驾驶员将一个人放在这里的x处,我得到的时间是08:30 AM。在放下之后,他需要到达目的地,并且花了20分钟,这是在float中,需要转换为字符串,如果我们加上这2,我们需要将总时间设为08:50,现在这总时间需要另存为float
我需要像1.30 = 1.5这样
我建议您将Java.time(现代Java日期和时间API)用于时间数学。您不能在一段时间内使用Date
。而是将LocalTime
用于一天中的某个时间,将Duration
用于一个持续时间(一定时间)。
LocalTime dropOff = LocalTime.of(8, 30);
System.out.println("Drop-off: " + dropOff);
Duration timeToDest = Duration.ofMinutes(20);
LocalTime end = dropOff.plus(timeToDest);
System.out.println("Time at destination: " + end);
输出:
Drop-off: 08:30 Time at destination: 08:50
转换为指示午夜以来的小时数的flaot
:
float hoursSinceMidnight = (float) end.getLong(ChronoField.NANO_OF_DAY)
/ (float) Duration.ofHours(1).toNanos();
System.out.println("As float: " + hoursSinceMidnight);
As float: 8.833334
java.time在较新和较旧的Android设备上均可正常运行。它只需要至少Java 6。
org.threeten.bp
导入日期和时间类。java.time
。java.time
的向后移植到Java 6和7(JSR-310的ThreeTen)。这里
String date3 = timeFormat.format(new Date(sum));
// First you have to replace ":" to "." to get valid string that can be converted to float
String strDate = date3.replace(":", ".");
// Use Float.value() to convert
Float floatValue = Float.valueOf(strDate);
这是您的目标吗?
“” 1:30“ => 1.5” 1.83“ => 1.83” 0.5“ => 0.5
如果您尝试正确的话
public static float HoursToFloat(String tmpHours) {
float result = 0;
tmpHours = tmpHours.trim();
try {
result = new Float(tmpHours);
} catch (NumberFormatException nfe) {
if (tmpHours.contains(":")) {
int hours = 0;
float minutes = 0;
try {
hours = Integer.parseInt(tmpHours.split(":")[0]);
minutes = Integer.parseInt(tmpHours.split(":")[1]);
} catch (Exception nfe2) {
throw nfe2;
}
if (minutes > 0) {
result = minutes / 60;
}
result += hours;
}
}
return result;
}