在Java中使用本地化格式化时间间隔

时间:2012-11-19 09:43:56

标签: java time

我们在数据库中存储的间隔(两个oracle时间戳之间的经过时间)为秒,我们使用Java在前端格式化它们。

我们在报告中要实现的是“HH:MM”或“HH:MM:SS”形式的格式,时间分隔符“:”与日期和时间信息一起本地化,即' “。意大利语和英语的“:”。

不幸的是,与日期相关的格式化类(如SimpleDateFormat)不起作用**因为我们可以预期持续时间超过24小时。 我们也不想雇用3rdy party library

你知道我们如何解决这个问题吗?

TIA

2 个答案:

答案 0 :(得分:2)

如果您想要超过24小时,可以单独打印。

int hour = time / 3600000;
String duration = time + new SimpleDateFormat(":mm:ss").format(new Date(time));

要支持其他语言环境,您可以执行此更复杂的示例。

int hour = time / 3600000;
String duration = hour
                + DateFormat.getDateInstance(DateFormat.MEDIUM, locale)
                            .format(new Date(time % 3600000).substring(1);

这将使用特定于语言环境的格式作为小时的最后一位数+分钟+秒,并在小时的附加数字前加上。注意:这不适用于负面时间。

答案 1 :(得分:1)

您可以构建一个日期对象,比如" 2000-01-01",然后将秒添加到它。然后,您可以使用它来提取时间的本地化版本:

DateFormat format = DateFormat.getTimeInstance(DateFormat.MEDIUM, locale);
String formatted_time_part = format.format(some_date_object);

最后你还需要添加经过的天数!我担心长间隔(天,月,年,世纪)的本地化在Java中没有相应的API,但我可能错了。所以你必须自己弄明白。