将MySql DateTime类型转换为更友好的类型

时间:2008-12-20 18:49:25

标签: java mysql jsp pojo

我有一个Java Web应用程序,它读取MySql数据库并返回DateTime字段。将结果集中返回的DateTime字段转换为更具可读性的最佳方法是什么?

目前,DateTime字段打印为:

2008-12-14 16:30:00

但我想要一些更友好的用户:

2008年12月14日16:30

我使用pojo中的这些dateTimes填充ArrayList。我想在添加到arrayList之前格式化它们,这样我就可以在JSP中打印arrayList的内容。

5 个答案:

答案 0 :(得分:5)

另一种选择是使用JSTL。格式化库可以轻松地以任何格式显示日期,并且可以识别它。优点是您可以将日期保留为Date对象并对其进行操作,但仅在需要显示时进行转换。格式标记如下所示:

<fmt:formatDate value="${myDate}" dateStyle="MEDIUM"/>

就像我上面说的那样,一个很大的优点是它可以让我知道,所以你可以用本地化的格式显示日期。

完整语法为:

 <fmt:formatDate value="expression" 
     timeZone="expression"
     type="field" dateStyle="style" 
     timeStyle="style"
     pattern="expression"
     var="name" scope="scope"/>

答案 1 :(得分:3)

Mysql date_format()

mysql> select date_format(now(),'%d %b %Y at %H:%i') as formated_date;
+----------------------+
| formated_date        |
+----------------------+
| 20 Dec 2008 at 10:56 | 
+----------------------+

答案 2 :(得分:1)

我更喜欢在Java代码中使用simpleDateFormat,因此我的代码不会绑定到任何数据库函数(我知道这个理由不充分)。

    Date date = ...
    DateFormat df = new SimpleDateFormat("dd MMM yyyy 'at' HH:mm");  // Locale?
    String text = df.format(date);

警告SimpleDateFormat不是线程安全的。来自文档:

  

日期格式未同步。建议为每个线程创建单独的格式实例。如果多个线程同时访问格式,则必须在外部进行同步。

答案 3 :(得分:0)

你对数据库有什么样的抽象层?它看起来像是一个简单的子类化的例子,你正在使用它作为字段类,并为你的格式添加一个方法。

答案 4 :(得分:0)

我建议使用标记格式化选项,因为您拥有真实数据(日期/时间),并且您在页面级别格式化格式是相关的(并且您知道..例如,要应用的语言环境)。

如果你想要格式化它并将字符串放入List中,请使用java.text.SimpleDateFormat,如Carlos Heuberger所说。