让我为你提出这个解决方案.所以在你的托管bean中,这样做
public String convertTime(long time){
Date date = new Date(time);
Format format = new SimpleDateFormat("yyyy MM dd HH:mm:ss");
return format.format(date);
}
所以在你的JSF页面中,你可以这样做(假设foo是包含你的时间的对象)
如果您有多个页面要使用此方法,可以将其放在抽象类中,并让您的托管bean扩展此抽象类.
编辑:使用TimeZone返回时间
不幸的是,我认为SimpleDateFormat将始终格式化本地时间,所以我们可以使用SimpleDateFormat了.所以要在不同的时区显示时间,我们可以做到这一点
public String convertTimeWithTimeZome(long time){
Calendar cal = Calendar.getInstance();
cal.setTimeZone(TimeZone.getTimeZone("UTC"));
cal.setTimeInMillis(time);
return (cal.get(Calendar.YEAR) + " " + (cal.get(Calendar.MONTH) + 1) + " "
+ cal.get(Calendar.DAY_OF_MONTH) + " " + cal.get(Calendar.HOUR_OF_DAY) + ":"
+ cal.get(Calendar.MINUTE));
}
更好的解决方案是利用JodaTime.在我看来,这个API比Calendar更好(更轻,更快,提供更多的功能).加上Calendar.Month在1月是0,强制开发者添加1的结果,你必须自己格式化时间.使用JodaTime,您可以修复所有这些.纠正我,如果我错了,但我认为JodaTime被并入JDK7