【问题标题】:Hours and minutes to hours value with fractional part小时和分钟到小时值与小数部分
【发布时间】:2018-11-30 09:02:45
【问题描述】:

我有一个表格,可以计算时间之间的小时数和分钟数。我想将结果转换为计算值,例如 1 小时 30 分钟是结果 1,5。现在我得到结果 1,3。我现在需要计算并写下来。

我找到了一些转换器,但目前无法计算,因此不适合我的需要。

我还希望用户看到我的代码显示的小时数和分钟数。我知道我只能用 0,6 分割秒,然后在选择选项 0,25 而不是 0,15 中显示。这不是一个选项。

  • Ura pričetka - 开始时间,
  • Ura končanja - 结束时间,
  • Nadure - 它只是计算某个值之上的值,
  • Ure - 目前必须计算和转换的结果

我正在用java计算。

代码:

 <td align="left">Ure </td>
            <td align="left"><input name="ure" id="ure" type="text" onchange="updatesum()"/></td>
          </tr>
          <tr>
            <th align="right">Ura pričetka </th>
            <td align="left"><select name="urap" id="urap" type= "time" onChange="updatesum()" value="9.00"/>
            <OPTION>
            <?php for($hours=0; $hours<24; $hours++) // the interval for hours is '1'
    for($mins=0; $mins<60; $mins+=15) // the interval for mins is '15'

        echo '<option>'.str_pad($hours,2,'0',STR_PAD_LEFT).'.'
                       .str_pad($mins,2,'0',STR_PAD_LEFT).'
                       </option>'; ?></OPTION></td>
            <td align="left">Nadure </td>
            <td align="left"><input name="nadure" id="nadure" type="text" onchange="updatesum()"  /></td>
          </tr>

          <tr>
            <th align="right">Ura končanja </th>

            <td align="left"><select name="urak" id="urak" type= "time" onChange="updatesum()" value=""/>

            <OPTION>

            <?php for($hours=0; $hours<24; $hours++) // the interval for hours is '1'
    for($mins=0; $mins<60; $mins+=15)  
     // the interval for mins is '15'

        echo '<option>'.str_pad($hours,2,'0',STR_PAD_LEFT).'.'
                       .str_pad($mins ,2,'0',STR_PAD_RIGHT).'
                       </option>';                    
                       ?>
            </OPTION>     
            </td> 




       <script type="text/javascript">

       function updatesum() {


document.loginForm.ures.value = (document.loginForm.urak.value -0) - (document.loginForm.urap.value -0);
$ures = loginForm.ures.value;
if (loginForm.ures.value > <?php echo $test ?>) {
  loginForm.ure.value ='<?php echo $test ?>'
  loginForm.nadure.value = (document.loginForm.ures.value -0) - (document.loginForm.ure.value -0);
}

if (loginForm.ures.value <= <?php echo $test ?>) {
  loginForm.ure.value = loginForm.ures.value
  loginForm.nadure.value = (document.loginForm.ures.value -0) - (document.loginForm.ure.value -0);
}

};

</script>

            <input type="text" name="ures" onChange="updatesum()"/>

【问题讨论】:

  • Java 到底与您的问题有什么关系?
  • 我在java中计算。我不是真正的专家,如果我犯了任何错误,请见谅。
  • 我不确定你的 PHP 代码是否有用。您可能希望以较短的形式传达其中的重要信息,或者如果您认为值得包含,那么至少缩进很好,这样我们就可以轻松阅读它。
  • 顺便说一句,小数表示时间跨度的方式很糟糕。考虑使用ISO 8601 standard for durations 中的文本。 java.time 类 Period 和 Duration 在解析/生成字符串时默认使用这些标准格式。
  • @BasilBourque 为了完整起见,根据您的链接“使用的最小值也可能有小数,如“P0.5Y”表示半年。”因此,PT1,5H 在 ISO 8601 中被接受为一个半小时(尽管 Java 的 Duration 类无法解析或生成它)。我会让提问者决定他/她的网络应用程序中是否真的需要小数小时。

标签: java date hour minute


【解决方案1】:

一个建议可能是:

    String startTimeString = "08:30";
    String endTimeString = "10:00";

    LocalTime startTime = LocalTime.parse(startTimeString);
    LocalTime endTime = LocalTime.parse(endTimeString);
    long totalMinutes = ChronoUnit.MINUTES.between(startTime, endTime);
    double hours = (double) totalMinutes / (double) Duration.ofHours(1).toMinutes();
    System.out.println("Hours between start and end: " + hours);

这个 sn-p 的输出是:

开始和结束之间的小时数:1.5

我可以在 Android 上使用它吗?

A duplicate question 要求在 Android 上进行此计算。它适用于较旧和较新的 Android 设备。

  • 在 Java 8 及更高版本以及更新的 Android 设备(从 API 级别 26 起)中,现代 API 是内置的。
  • 在 Java 6 和 7 中,获取 ThreeTen Backport,即新类的后向端口(对于 JSR 310,ThreeTen;请参阅底部的链接)。
  • 在(较旧的)Android 上使用 ThreeTen Backport 的 Android 版本。它被称为 ThreeTenABP。并确保从 org.threeten.bp 导入日期和时间类以及子包。

链接

【讨论】:

    【解决方案2】:

    要将分钟转换为小时小数,只需将分钟除以 60

    例如 1:30 = 1 + (30/60) = 1.5

    或:15 = 15/60 = 0.25

    public static double methodName(int hours, int minutes) {
       return hours + (minutes / 60);
    }
    

    【讨论】:

    • 正如我在帖子中提到的那样,我知道这一点。但是我怎么能在java中做到这一点,所以它会在我的结果中计算出来。只是在我的代码中找不到正确的方法。
    • 创建一个需要几小时和几分钟的方法,并返回该计算的结果
    猜你喜欢
    • 2017-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-10
    • 1970-01-01
    • 2018-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多