3

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

目前 DateTime 字段打印为:

2008-12-14 16:30:00

但我想要一些更用户友好的东西,比如:

2008 年 12 月 14 日 16:30

我正在用来自 pojo 的这些 dateTimes 填充 ArrayList。我想在添加到 arrayList 之前对其进行格式化,这样我就可以在 JSP 中打印 arrayList 的内容。

4

5 回答 5

5

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

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

就像我上面所说的,一个很大的优势是它可以识别 i18n,因此您可以以本地化格式显示日期。

完整的语法是:

 <fmt:formatDate value="expression" 
     timeZone="expression"
     type="field" dateStyle="style" 
     timeStyle="style"
     pattern="expression"
     var="name" scope="scope"/>
于 2008-12-20T20:28:45.847 回答
3

Mysql日期格式()

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

我更喜欢simpleDateFormat在 Java 代码中使用 a ,这样我的代码就不会绑定到任何数据库函数(我知道,原因很弱)。

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

请注意,这SimpleDateFormat不是线程安全的。从文档中:

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

于 2010-01-18T00:13:11.633 回答
0

你对数据库有什么样的抽象层?它看起来像是一个简单的案例,将您用作字段类的任何内容进行子类化,并为您的格式添加一个方法。

于 2008-12-20T19:05:12.833 回答
0

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

如果你无论如何都想格式化它并将字符串放入列表java.text.SimpleDateFormat中,就像 Carlos Heuberger 所说的那样。

于 2010-01-18T00:28:45.077 回答