Java 如何在Android中获取结束时间作为float
我有一个字符串时间格式,比如08:25,现在我如何转换为浮点时间值Java 如何在Android中获取结束时间作为float,java,android,datetime,duration,timeofday,Java,Android,Datetime,Duration,Timeofday,我有一个字符串时间格式,比如08:25,现在我如何转换为浮点时间值 String guestclosetime = getCurrentTime(); SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm"); timeFormat.setTimeZone(TimeZone.getTimeZone("UTC")); try { System.out.println("starttim
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地点放下一个人,我得到了现在的时间,比如上午8:30。在降落后,他需要到达目的地,他花了20分钟,这是浮动的,需要转换为字符串,如果我们加上2,我们需要得到总时间为08:50,现在总时间需要保存为浮动
我需要像这样的1.30=1.5
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;
}
java.time和ThreeTenABP
我建议您在时间数学中使用java.time,这是现代java日期和时间API。不能在一定时间内使用日期
。相反,对于一天中的某个时间使用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);
输出:
要转换为指示自午夜起的小时数的flaot
:
float hoursSinceMidnight = (float) end.getLong(ChronoField.NANO_OF_DAY)
/ (float) Duration.ofHours(1).toNanos();
System.out.println("As float: " + hoursSinceMidnight);
问:java.time不需要Android API级别26吗?
time在较旧和较新的Android设备上都能很好地工作。它至少需要Java6
- 在Java8和更高版本以及更新的Android设备上(API级别26),现代API是内置的
- 在非androidjava6和7中,获取三个后端口,即现代类的后端口(三个十用于jsr310;请参见底部的链接)
- 在(较旧的)Android上使用Android版本的ThreeTen Backport。它叫ThreeTenABP。并确保从带有子包的
导入日期和时间类org.threeten.bp
- 解释如何使用java.time
- ,其中首先描述了
java.time
- ,java.time的后端口到Java6和Java7(JSR-310为三十)
- ,Android版Three Ten Backport
- ,解释得非常透彻
float hoursSinceMidnight = (float) end.getLong(ChronoField.NANO_OF_DAY)
/ (float) Duration.ofHours(1).toNanos();
System.out.println("As float: " + hoursSinceMidnight);
As float: 8.833334