java - 如何将 "fraction of day"转换为 Java 时间?

标签 java excel datetime time

我正在使用 Excel 格式,其中

0.6549

表示我们一天的工作量为 65.49%。我如何将其转换为漂亮的时间,例如

下午 15:30:42

在 Java 中?

最佳答案

试试这个:

public static void main(String[] args) throws Exception {
    DateFormat format = new SimpleDateFormat("HH:mm:ss a");
    format.setTimeZone(TimeZone.getTimeZone("UTC"));
    for(String fracStr : args) {
        double frac = Double.parseDouble(fracStr);
        long day = (long) Math.floor(frac);
        frac = frac - day;
        Date time = new Date((long) ( 86400000l * frac));
        System.out.println(fracStr+" -> "+format.format(time));
    }
}

这里有一点注意 - GMT 时区可能无法为您提供预期的结果,但 UTC 可以。这是因为 Java 将 GMT 视为 Europe/London 的有效缩写,并且在 1968 年至 1972 年间,伦敦采用永久夏令时。因此,格林威治标准时间 1970 年 1 月 1 日午夜(Java 纪元)也是 1970 年 1 月 1 日凌晨 1 点(格林威治标准时间)。

关于java - 如何将 "fraction of day"转换为 Java 时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5636905/

相关文章:

java - 基于Java语言规范对String Literal的澄清

c - 以秒为单位获取当前日期和时间

datetime - EF 迁移 : Can't add DateTime column

iphone - 如何解析 Objective C 中的 ISO-8601 持续时间?

java - 我可以在 "foreach"中一次又一次地使用 iterable 遍历列表吗?

java - 如何添加回调以将文本附加到 TextArea 或执行解析的类中的其他内容?

java - 无法从 Python 服务器向 Java 客户端发送任何内容

asp.net-mvc - 返回excel文件而不将其保存在 Controller 内的服务器中

我可以用 Excel12 交换 Excel4 吗?

从列表中随机选择