我如何转换;“日分数”;到Java时间?

我如何转换;“日分数”;到Java时间?,java,excel,datetime,time,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.getTimeZon

我正在使用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会。这是因为爪哇认为GMT是欧洲/伦敦的有效缩写,1968年至1972年间,伦敦实行了永久性的夏令时。因此,1970年1月1日午夜GMT(爪哇纪元)也是1970年1月1日凌晨1点(GMT)