Java 如何在Android中获取结束时间作为float

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

我有一个字符串时间格式,比如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地点放下一个人,我得到了现在的时间,比如上午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
  • ,解释得非常透彻

向我们展示在转换为类似dis 20.12的浮点型时所需的.date3字符串的示例输出??20.12 ? 怎么做?我只是举了一个这样的例子。在这里我想得到08:28,这需要转换为浮点,考虑抛弃长期过时的和臭名昭著的麻烦代码< SimpleDateFormat >代码>和朋友,并添加到你的Android项目中,以便使用JavaTimes,现代java日期和时间API。这是这么好的工作。看它应该转换日期3到相关的浮动时间见我有一个场景,当司机在x地点落下一个人在这里,我得到了当前的时间,如上午8:30。在降落后,他需要到达目的地,他花了20分钟,这是浮动,需要转换为字符串,如果我们加上2,我们需要得到总时间为08:50,现在总时间需要保存为浮动是的。我需要1.30=1.5,我得到的字符串时间是15:29,转换后的浮点值是1.0。我想这不对吗?测试并报告答案我想我猜到你的意思了。我已经改变了转换为浮动的方式,所以现在它给出了我认为你想要的东西。
    float hoursSinceMidnight = (float) end.getLong(ChronoField.NANO_OF_DAY)
            / (float) Duration.ofHours(1).toNanos();
    System.out.println("As float: " + hoursSinceMidnight);
As float: 8.833334