我正在使用 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/