首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java.sql.Date (YYYY-MM-DD)到java.util.Date (DD)转换

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

Stack Overflow用户
提问于 2015-02-13 17:45:13
回答 3查看 6K关注 0票数 0

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

类java.sql.Date被设计为只携带日期。我有一个表,其中列EXPIRY_DATE作为日期数据类型。

当我做以下操作时

代码语言:javascript
复制
rs.getDate("EXPIRY_DATE")

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

我有下面的Java

代码语言:javascript
复制
class ABC {
     java.util.Date expiryDate;
}

我希望将上面的bean作为JSON对象返回给JSP页面视图。由于我们使用的是Spring控制器(@RestController服务),我编写了以下行:

代码语言:javascript
复制
@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 DD。

我想将格式的输出发送到JSP页面视图。

如何转换相同的?

我试过以下代码,

注意:下面的代码与我的上述问题无关。我只需要上述@RestController春季代码的解决方案

代码语言:javascript
复制
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 1月14 : 00:00:00 IST 2013

我想发送日期,格式为dd-MMM-YYYY,类似于28-2015年2月-2015年。

目前,我的@RestController代码返回类似于2015-02-28的java.sql.Date格式。但我想要在2015年2月28日。

请建议如何将java.sql.Date (YYYY)转换为java.util.Date (DD YYYY)。

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-02-13 17:51:05

这是因为一旦对日期进行了格式化,就可以重新解析它。

代码语言:javascript
复制
date = format1.parse(input);
String temp = format2.format(date);
Date outDate = format2.parse(temp);
System.out.println(outDate);

简单地做

代码语言:javascript
复制
date = format1.parse(input);
String temp = format2.format(date);
System.out.println(temp)

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

代码语言:javascript
复制
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
代码语言:javascript
复制
<fmt:formatDate value="${bean.date}" pattern="dd-MMM-yy" />
票数 0
EN

Stack Overflow用户

发布于 2015-02-13 17:48:30

我想将格式的输出发送到JSP页面视图。

然后,您需要使用SimpleDateFormat来做到这一点。目前,您正在使用Date.toString()的结果,而忽略了已经有正确结果的temp。

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

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2021-04-14 07:09:27

代码语言:javascript
复制
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);
        }
        
    }
    
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28505539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档