Java 将MySql日期时间类型转换为更友好的类型

Java 将MySql日期时间类型转换为更友好的类型,java,mysql,jsp,pojo,Java,Mysql,Jsp,Pojo,我有一个Java web应用程序,它读取MySql数据库并返回DateTime字段。将结果集中返回的DateTime字段转换为可读性更好的字段的最佳方法是什么 当前日期时间字段打印为: 2008-12-14 16:30:00 但是我想要更方便用户的东西,比如: 2008年12月14日16:30 我正在用pojo中的这些日期时间填充ArrayList。我想在添加到arrayList之前格式化它们,这样我就可以在JSP中打印arrayList的内容。Mysql 在数据库上有什么样的抽象层?它看起来像

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

当前日期时间字段打印为:

2008-12-14 16:30:00

但是我想要更方便用户的东西,比如:

2008年12月14日16:30

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

Mysql


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

另一个选项是使用JSTL。格式库可以轻松地以任何格式显示日期,并且支持i18n。其优点是,您可以将日期保留为日期对象并对其进行操作,但只能在需要显示时对其进行转换。格式标记将如下所示:

<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"/>

我更喜欢在Java代码中使用
SimpleDataFormat
,这样我的代码就不会绑定到任何数据库函数(我知道这是一个薄弱的原因)

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

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


我建议使用标记格式选项,因为您拥有真实的数据(日期/时间),并且您可以在与格式相关的页面级别进行格式设置(通过示例,您知道要应用的区域设置)


如果要格式化它并将字符串放入列表中,请使用卡洛斯·赫伯杰(Carlos Heuberger)所说的
java.text.simpleDataFormat

Doh!我认为这完美地回答了我刚刚发布的问题。我应该先读一下。没有意识到我可以让mysql为我格式化日期。谢谢。这不是正确的方法。您应该为此使用JSTL
fmt:formatDate
。这样,您就可以一直在Java代码中保留一个有价值的
日期
对象。尝试将日期时间本身发送到UI并在那里格式化!他正在使用JSP。Vincent Ramdhanie提到的
fmt:formatDate
是唯一正确的方法。顺便说一下,它已经有了
SimpleDateFormat
的支持,并且自动地考虑了区域设置。重读他的答案,因为。@BalusC因为我理解OP,他想在添加到列表之前格式化--ups——刚才我看到这个问题已经很老了。。。
 <fmt:formatDate value="expression" 
     timeZone="expression"
     type="field" dateStyle="style" 
     timeStyle="style"
     pattern="expression"
     var="name" scope="scope"/>
    Date date = ...
    DateFormat df = new SimpleDateFormat("dd MMM yyyy 'at' HH:mm");  // Locale?
    String text = df.format(date);