gpt4 book ai didi

java - 格式化持续时间的问题

转载 作者:行者123 更新时间:2023-11-29 05:15:23 25 4
gpt4 key购买 nike

运行以下代码:

private static String formatDuration(final long duration) {
final long hh = duration / 1000 / 3600;
final long mm = duration / 1000 % 3600 / 60;
final long ss = duration / 1000 % 3600 % 60;
return hh + "h" + ":" + mm + "m" + ":" + ss + "s";
}


private static void printDuartion() throws ParseException{
SimpleDateFormat PARSE_FORMAT = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
long dayFrom = PARSE_FORMAT.parse("11/02/2014 00:00:00").getTime();
long dayTo = PARSE_FORMAT.parse("11/03/2014 23:59:59").getTime();
System.out.println(formatDuration(dayTo-dayFrom));
}

我有一个输出:48 小时:59 分钟:59 秒

但实际上应该是:47 小时:59 分钟:59 秒

请帮我找出错误所在。

最佳答案

你的代码是正确的,我也得到了47h:59m:59s。演示:http://ideone.com/fxZKba

我只能想象你现在所在的时区受到 Daylight saving time 的影响。 .如以下示例中的“大西洋/百慕大”:

   private static void printDuration() throws Exception {
SimpleDateFormat PARSE_FORMAT = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
PARSE_FORMAT.setTimeZone(TimeZone.getTimeZone("Atlantic/Bermuda"));
long dayFrom = PARSE_FORMAT.parse("11/02/2014 00:00:00").getTime();
long dayTo = PARSE_FORMAT.parse("11/03/2014 23:59:59").getTime();
System.out.println(formatDuration(dayTo - dayFrom));
}

在这种情况下,我得到 48h:59m:59s 演示:http://ideone.com/jQ7sX2

关于java - 格式化持续时间的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26753648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com