我有一个XMLGregorianCalendar格式的日期,格式为"2013-05-16T09:54:13",我需要将其转换为"MM/DD/YYYY hh:mm:ss AM"格式的时间戳,并在使用Java插入Oracle数据库表中。
请问如何在Java中实现此功能?
请问如何在Java中实现此功能?
Date
:calendar.toGregorianCalendar().getTime()
Date
:preparedStatement.setDate(colNum, myDate);
以下是更加清晰的解答:
从XMLGregorianCalendar实例获取Date实例:
Date date = xmlCalendar.toGregorianCalendar().getTime();
我发现这段代码来自在Java中将XMLGregorianCalendar转换为日期
使用格式“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)
如果要插入数据库,您可以按照Daniel的建议进行操作。
XMLGregorianCalendar xgc=<assume this is initialized>;
Date timestamp=xgc.toGregorianCalendar().getTime();
然后将其作为毫秒级(Epoch时间)时间戳通过PreparedStatement插入。这样,您就不会丢失精度。
preparedStatement.setTimestamp(colNum,new Timestamp(timestamp.getTime()));
myPreparedStatement.setObject(
… ,
myXGC.toGregorianCalendar()
.toZonedDateTime()
) ;
GregorianCalendar gc = myXGC.toGregorianCalendar() ;
ZonedDateTime zdt = gc.toZonedDateTime();
myPreparedStatement.setObject( … , zdt ) ;
myPreparedStatement.setTimestamp( … , java.sql.Timestamp.from ( zdt.toInstant() ) ) ;
public String parseDate(String format,XMLGregorianCalendar XMLdate){
Date date = XMLdate.toGregorianCalendar().getTime();
DateFormat formatter = new SimpleDateFormat(format);
String formattedDate = formatter.format(date);
return formattedDate;
}
这将返回java.util.Date:
java.util.Date tempDate = issueDate.toGregorianCalendar().getTime();
在Java中使用DateFormat类。这个链接可能会有所帮助:http://docs.oracle.com/javase/6/docs/api/java/text/DateFormat.html
您可以使用以下两行代码将XMLGregorianCalendar转换为java.util.Date对象:
Date date = xmlDate.toGregorianCalendar().getTime();
System.out.println("java.util.date :- " + date);
要将其转换为java.sql.Date对象,请使用以下代码:
long time = xmlDate.toGregorianCalendar().getTime().getTime();
java.sql.Date sqlDate = new java.sql.Date(time);