时间相减有什么问题?

3

我知道Date类有时候会非常麻烦。

您能否给我一些缓解之策,告诉我如何减去时间?

我手头有:

SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy HH:mm");
SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss");
String s = "13.04.2015 16:00";
String s2 = "13.04.2015 15:30";
Date date = format.parse(s);
System.out.println(timeFormat.format(date.getTime() - format.parse(s2).getTime()));

这使我得到了02:30:00,但我希望得到00:30:00 :)

你使用的是哪个Java版本? - Puce
2
始终在“SimpleDateFormat”中指定“Locale”。这将保护您免受许多错误的影响。顺便说一下,00:30 UTC是02:30 Kiyv(我想这是您所在的时区),因此您的代码运行得非常好。 - Alex Salauyou
@SashaSalauyou 哦,现在我明白了。谢谢你的提示! - Denis Yakovenko
2个回答

6

我建议为两个 SimpleDateFormat 强制使用通用的 TimeZone

format.setTimeZone(TimeZone.getTimeZone("UTC"));
timeFormat.setTimeZone(TimeZone.getTimeZone("UTC"));

格式化日期之前。


3

我不确定您是否因为某些要求而被限制在Java日期类上,但如果您在应用程序中频繁使用日期和时间,我建议使用Joda-Time库。它可以自动解决许多问题,并且使日期和时间的操作更加简单易行。


是的,我一定会看看它! - Denis Yakovenko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接