如何将当前日期时间的格式设置为不同的格式?

时间:2013-07-30 06:01:17

标签: java hibernate datetime-format

我使用以下代码检索当前日期和时间,然后使用以下方法将其添加到表中。

 Change 2013-07-29 23:20:34.0 to 29th July 2013, 11:20 PM

日期时间

 public Date getCurrentDateTime() {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = new Date();
        System.out.println("current:" + dateFormat.format(date));
        return date;
    }

休眠

@Temporal(javax.persistence.TemporalType.TIMESTAMP)
    public Date getCurrentDateTime() {
        return date;
    }

3 个答案:

答案 0 :(得分:4)

Date对象没有格式。 (既不是java.sql.Date也不是java.util.Date。)数据库只会将它存储在表中,无论它选择什么样的本地表示(几乎肯定不是文本),当你检索数据时,它取决于你< / em>按照您的意愿格式化它。

要更改System.out.println使用的格式,只需更改传递给SimpleDateFormat构造函数的模式 - 有关详细信息,请参阅文档。请注意,您应该考虑您感兴趣的时区和Locale - 例如,不同语言环境之间的月份名称不同,并且不同的语言环境也有不同的预期格式。 (即使在同一种语言中,也有不同的惯例。)

你会发现“{29}”的“th”难以处理SimpleDateFormat - 我不相信它支持序数。 This question可能会帮助你。 (这会是丑陋的代码,请注意 - 如果可能的话,我建议更改格式以删除序数。)

答案 1 :(得分:2)

要将日期更改为序号,您需要使用以下suffix。看看这个link

DD +     TH = DDTH  result >>>> 4TH

OR to spell the number add SP to the format

DD + SPTH = DDSPTH   result >>> FOURTH

还可以使用fmt库格式化jsp页面上的日期

 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

 <fmt:formatDate type="both" dateStyle="long" timeStyle="short" 
      value="${date}"/>

答案 2 :(得分:0)

与此类似的事情?

for hibernate

SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy");
String dateBufferString = format.format(date);
Date dateBuffer;
try {

dateBuffer = format.parse(dateBufferString);
System.out.println("Database Date Format :" + date);
System.out.println("(dd-MM-yyyy) date: " + format.format(date));
System.out.println("dateBufferSTring " + dateBufferString);
System.out.println("dateBuffer: " + dateBuffer);