![](/img/trans.png)
[英]Dozer convert for String to date mapping but with optional date pattern? (i.e. yyyy-MM-dd[ HH:mm:ss] )
[英]convert XMLGregorianCalendar to date i.e “MM/DD/YYYY hh:mm:ss AM”
我有XMLGregorianCalendar格式的日期,如“2013-05-16T09:54:13”,我必须转换为时间戳“MM / DD / YYYY hh:mm:ss AM”,以便使用java插入到oracle数据库表中。
我怎么能用Java做到这一点?
您可以这样做以返回Date
:
calendar.toGregorianCalendar().getTime()
我发现了本教程中的代码。 从那里,您可以使用SimpleDateFormat将其转换为您想要的格式的字符串。
但是,如果您使用JDBC在数据库中保存日期,则可以使用此方法直接传递Date
:
preparedStatement.setDate(colNum, myDate);
这里有更明确的答案:
从XMLGregorianCalendar实例获取Date实例:
Date date = xmlCalendar.toGregorianCalendar().getTime();
我发现代码从Convert XMLGregorianCalendar转换为Java中的Date
格式化格式为“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();
然后通过PreparedStatement作为Timestamp插入它,以毫秒为单位(纪元时间)。 这样你就不会失去精确度。
preparedStatement.setTimestamp(colNum,new Timestamp(timestamp.getTime()));
myPreparedStatement.setObject(
… ,
myXGC.toGregorianCalendar()
.toZonedDateTime()
) ;
现代方法使用java.time类来取代麻烦的旧类Date
, Calendar
和GregorianCalendar
。
从遗留类转换为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() ) ) ;
在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.slq.Date对象,请使用以下代码: -
long time = xmlDate.toGregorianCalendar().getTime().getTime();
java.sql.Date sqlDate = new java.sql.Date(time);
你可以在这里看到完整的例子
请使用下面的函数 - 只需传递您想要的XMLGregorianCalendar实例和日期格式(格式示例:“DD MMMM yyyy” - > 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;
}
这将返回java.util.Date:
java.util.Date tempDate = issueDate.toGregorianCalendar().getTime();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.