java.sql.Date(YYYY-MM-DD)到java.util.Date(DD-MMM-YYYY)转换

时间:2015-02-13 17:45:13

标签: java

需要建议如何将java.sql.Date(YYYY-MM-DD)发送到java.util.Date(DD-MMM-YYYY)。

类java.sql.Date旨在仅携带日期。我有一个表,其列EXPIRY_DATE为DATE数据类型。

当我执行以下操作时

rs.getDate("EXPIRY_DATE")

它以YYYY-MM-DD格式给出输出。例如,2015-04-05

我有一个以下的Java bean

class ABC {
     java.util.Date expiryDate;
}

我想将上述bean作为JSON对象返回到JSP页面视图。当我们使用Spring REST Controller( @RestController 服务)时,我写了以下一行,

@RestController
@RequestMapping("/url")
class someClass {

@RequestMapping("/url")
Object someWebServiceMethod() {
    ABC object = new ABC();
    object.setExpiryDate( resultSet.getDate("EXPIRY_DATE") );
    return object;
    }
}

我的webservice以java.sql.Date格式返回日期,如YYYY-MM-DD。

我想以DD-MMM-YYYY格式将输出发送到JSP页面视图。

如何转换它?

我尝试过以下代码,

注意:以下代码与我的上述问题无关。我只需要解决上述@RestController弹簧代码

的解决方案
public static void convertDate() {
    String input = "2013-09-14";
    // DateFormat format = DateFormat.getInstance();
    SimpleDateFormat format1 = new SimpleDateFormat("yyyy-mm-dd");
    SimpleDateFormat format2 = new SimpleDateFormat("dd-MMM-yy");
    Date date;
    try {
        date = format1.parse(input);
        String temp = format2.format(date);
        Date outDate = format2.parse(temp);
        System.out.println(outDate);
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

但它的输出为 Mon Jan 14 00:00:00 IST 2013

我想发送日期,格式为dd-MMM-YYYY,如2015年2月28日

目前我的@RestController代码返回java.sql.Date格式,如2015-02-28。但我想成为2015年2月28日。

请告知如何将java.sql.Date(YYYY-MM-DD)转换为java.util.Date(DD-MMM-YYYY)转换

由于

3 个答案:

答案 0 :(得分:1)

  

我想以DD-MMM-YYYY格式将输出发送到JSP页面视图。

然后您需要使用SimpleDateFormat来执行此操作。目前,您正在使用Date.toString()的结果,并忽略应该已经拥有正确结果的temp

但是,您根本不需要解析 java.sql.Date - 您可以直接将其传递给DateFormat.format

java.sql.Date date = /* get date from database */; 
// TODO: Specify time zone and locale
SimpleDateFormat format = new SimpleDateFormat("dd-MMM-yyyy");
String formattedDate = format.format(date);

或者,我怀疑JSP已经有一种机制允许你将日期直接传递给JSP本身,并在那里指定输出格式......这实际上是一个尽可能靠近表示层移动的转换

答案 1 :(得分:0)

这是因为您在格式化后重新解析日期。

date = format1.parse(input);
String temp = format2.format(date);
Date outDate = format2.parse(temp);
System.out.println(outDate);

简单地做

date = format1.parse(input);
String temp = format2.format(date);
System.out.println(temp)

请注意,如果您有JSTL,则可以在页面中直接格式化:

<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<fmt:formatDate value="${bean.date}" pattern="dd-MMM-yy" />

答案 2 :(得分:0)

public class DatesTest {

    public static void main(String[] args) {        
        String strdate = "2018-07-02";
        SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
        SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yy");        
        try {            
            Date oldDate = format1.parse(strdate);
            System.out.println(sdf.format(oldDate));
        } catch (ParseException ex) {
            Logger.getLogger(DatesTest.class.getName()).log(Level.SEVERE, null, ex);
        }
        
    }
    
}