需要建议如何将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)转换
由于
答案 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);
}
}
}