将时间戳长转换为正常日期格式

拉贾特·古普塔(Rajat Gupta):

在我的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.MonthJanuary0,这迫使开发人员将其添加1到结果中,并且您必须自己格式化时间。使用JodaTime,您可以解决所有问题。如果我错了,请纠正我,但我认为它JodaTime已包含在其中JDK7

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章