将XMLGregorianCalendar转换为日期,即“MM / DD / YYYY hh:mm:ss AM”

时间:2013-05-23 05:48:44

标签: java date oracle11g

我有XMLGregorianCalendar格式的日期,如“2013-05-16T09:54:13”,我必须转换为时间戳“MM / DD / YYYY hh:mm:ss AM”,以便使用java插入到oracle数据库表中

我怎么能用Java做到这一点?

8 个答案:

答案 0 :(得分:46)

您可以执行此操作以返回Date

calendar.toGregorianCalendar().getTime()

我从this tutorial找到了代码。从那里,您可以使用SimpleDateFormat将其转换为您想要的格式的字符串。

但是,如果您使用JDBC在数据库中保存日期,则可以直接使用this method传递Date

preparedStatement.setDate(colNum, myDate);

答案 1 :(得分:6)

这里有更明确的答案:

从XMLGregorianCalendar实例获取Date实例:

Date date = xmlCalendar.toGregorianCalendar().getTime();

我找到了来自Convert XMLGregorianCalendar to Date in Java

的代码

使用格式“MM / dd / yyyy hh:mm:ss a”格式化日期实例,您将获得MM / DD / YYYY hh:mm:ss AM格式

DateFormat  formatter = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss a");
String formattedDate  = formatter.format(date)

来自Convert Date to String in Java

为了插入数据库,你可以做丹尼尔建议的

答案 2 :(得分:3)

如果你想在数据库上插入你的日期,我会先做丹尼尔建议的事情:

XMLGregorianCalendar xgc=<assume this is initialized>;
Date timestamp=xgc.toGregorianCalendar().getTime();

然后将其作为Timestamp插入PreparedStatement,以毫秒为单位(纪元时间)。这样你就不会失去精确度。

preparedStatement.setTimestamp(colNum,new Timestamp(timestamp.getTime()));

答案 3 :(得分:1)

TL;博士

myPreparedStatement.setObject( 
    … , 
    myXGC.toGregorianCalendar()
         .toZonedDateTime()
) ;

java.time

现代方法使用java.time类来取代麻烦的旧类DateCalendarGregorianCalendar

从旧类转换为java.time。

GregorianCalendar gc = myXGC.toGregorianCalendar() ;
ZonedDateTime zdt = gc.toZonedDateTime();

将日期时间值传递给数据库作为日期时间对象而不是字符串

如果JDBC驱动程序符合JDBC 4.2及更高版本,则可以直接处理java.time类型。

myPreparedStatement.setObject( … , zdt ) ;

如果您的驱动程序尚未兼容,请简要转换为java.sql类型。

myPreparedStatement.setTimestamp( … , java.sql.Timestamp.from ( zdt.toInstant() ) ) ;

答案 4 :(得分:0)

在Java中使用DateFormat类。这应该会有所帮助:http://docs.oracle.com/javase/6/docs/api/java/text/DateFormat.html

答案 5 :(得分:0)

您可以使用以下两行代码将XMLGregorianCalendar转换为java.util.Date对象: -

Date date = xmlDate.toGregorianCalendar().getTime();
System.out.println("java.util.date :- " + date);

要转换为java.slq.Date对象,请使用以下代码: -

long time = xmlDate.toGregorianCalendar().getTime().getTime();
java.sql.Date sqlDate = new java.sql.Date(time);

您可以看到完整的示例here

答案 6 :(得分:0)

请使用以下功能 - 只需传递您想要的XMLGregorianCalendar实例和日期格式(格式示例:“DD MMMM yyyy” - &gt; 2017年1月1日)

public String parseDate(String format,XMLGregorianCalendar XMLdate){
    Date date = XMLdate.toGregorianCalendar().getTime();
    DateFormat  formatter = new SimpleDateFormat(format);
    String formattedDate  = formatter.format(date);
    return formattedDate;
}

答案 7 :(得分:0)

返回java.util.Date:

{{1}}