在我的Web应用程序中,用户特定活动的日期和时间作为时间戳存储(在数据库中)Long
,在显示回给用户时需要将其转换为正常的日期/时间格式。
(实际上,我的数据库Cassandra将写入列的时间戳记存储为一个长值(自1970年以来的微秒),我将用它来查找相应的用户活动的时间)
我正在使用JSF 2.0(+ primefaces),我相信它可能对这种转换有帮助吗?否则,我如何才能最好地实现这些转换?
让我为您提出此解决方案。因此,在您的托管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
该对象包含您的time
)
<h:dataTable value="#{myBean.convertTime(myBean.foo.time)}" />
如果您有多个页面要使用此方法,则可以将其放在中,abstract class
并让托管bean扩展this abstract class
。
编辑:使用TimeZone返回时间
不幸的是,我想SimpleDateFormat
总是会用当地时间格式化时间,所以我们不能再使用SimpleDateFormat
了。因此,要在不同的TimeZone中显示时间,我们可以执行此操作
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
号January
是0
,这迫使开发人员将其添加1
到结果中,并且您必须自己格式化时间。使用JodaTime
,您可以解决所有问题。如果我错了,请纠正我,但我认为它JodaTime
已包含在其中JDK7
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句