java - 如何在 JAVA 中将十进制值转换为 24 小时时间格式
问题描述
我从 SQLServer 检索时间值,显示为 0.0833333333333333,而它最初是 24 小时格式的 02:00。现在,我需要将此十进制值 0.0833333333333333 转换为 02:00 以进行进一步编码。在 JAVA 中是否有任何直接/简单的方法可以做到这一点?
解决方案
这是一个示例,使用 12 小时制,上午/下午,但使用java.time
类:
// no offset, no time zone:
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
...
double d = 0.7826388888888889;
long nanos = Math.round(d * 24L * 60L * 60L * 1_000_000_000L);
LocalTime localTime = LocalTime.ofNanoOfDay(nanos);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("h:mm a");
System.out.println(localTime.format(formatter));
此示例打印以下内容:
6:47 PM
如果你愿意,你可以用"h:mma"
得到6:47PM
- 没有空间。
LocalTime
保存没有任何时区信息的时间值。
您可以在此处查看可用格式选项的列表。
更新
正如 Ole VV 指出的那样,您可以通过简化乘法来使代码更清晰。使用java.time.Duration
或java.util.concurrent.TimeUnit
:
long nanosInOneDay = java.time.Duration.ofDays(1).toNanos();
或者
long nanosInOneDay = java.util.concurrent.TimeUnit.DAYS.toNanos(1);
推荐阅读
- javascript - React 无法从不同组件的函数体内更新组件
- python - python Selenium AttributeError 与 send_keys
- javascript - ChartJS 堆积条形图透明间隙
- android - 当我只选择第一个项目时,回收视图第一个和最后一个项目被选中
- android - 在 Android 中使用 MLkit 库的带有矩形框的条码扫描器
- python-3.x - 如何在python中注释xml的整个块和单个标签?
- python - django键、值字典在同一个键下返回数据
- java - 如何为 2 路 TLS 正确创建 SSLSocketFactory?(适用于 ApplePay)
- c# - 将 SQL Server 数据导出到桌面数据上的 CSV 文件中包含逗号
- r - R data.table 错误:无效的下标类型“列表”