java特殊格式的时间处理

java里,对数据进行格式化处理的对象在java.text包中。比如:MessageFormat。一般来说,如果去某一天中的某个时间的格式显示可以:

System.out.println(MessageFormat.format("当前时间:{0,time}", new Date()));

或者,用长整型数也可以:

System.out.println(MessageFormat.format("当前时间:{0,time}", 123456789));

得到的显示类似这样:

当前时间:10:25:44

不过,这个时间显示是带默认时区的,比如在中国,如果按照格林尼治时间是凌晨1点,会调整为上午9点,因为中国是东八区。

在特殊的场合,这种显示就不符合需求了。比如要写个播放器,里面需要显示视频播放的时长。

当然只要会java就可以写出格式化的方法。不过要注意的是,要考虑国际化/本地化的问题,如果在代码中写了本地化的文字提示,或者当前应用的文字,就不大好复用了。

这里写一个简单的代码,供有此需求的人参考:

long time = 1000 * 360'>3600 * 25 + 1000 * 60 * 5 + 1000 * 62;
long sec = 1000;
long min = 1000 * 60;
long hour = min * 60;
System.out.println(MessageFormat.format(
        "{0,number,00}:{1,number,00}:{2,number,00}", time / hour, time
                % hour / min, time % hour % min / sec));

这里的:

{0,number,00}:{1,number,00}:{2,number,00}

是个字符串'>字符串,是可以抽取出来放在国际化的资源文件里的。

atroffexart -
共有0个回答