Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将XMLGregorianCalendar转换为日期,即;年月日hh:MM:ss AM“;_Java_Date_Oracle11g - Fatal编程技术网

Java 将XMLGregorianCalendar转换为日期,即;年月日hh:MM:ss AM“;

Java 将XMLGregorianCalendar转换为日期,即;年月日hh:MM:ss AM“;,java,date,oracle11g,Java,Date,Oracle11g,我有一个XMLGregoriaCalendar格式的日期,如“2013-05-16T09:54:13”,我必须将其转换为时间戳“MM/DD/YYYY hh:MM:ss AM”,以便使用java插入oracle数据库表 如何在Java中执行此操作?您可以执行此操作以返回日期: calendar.toGregorianCalendar().getTime() 我从中找到了那个代码。从那里,您可以使用a将其转换为所需格式的字符串 但是,如果您使用JDBC将日期保存在数据库中,您可能可以通过以下方式直

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


如何在Java中执行此操作?

您可以执行此操作以返回日期:

calendar.toGregorianCalendar().getTime()
我从中找到了那个代码。从那里,您可以使用a将其转换为所需格式的字符串

但是,如果您使用JDBC将日期保存在数据库中,您可能可以通过以下方式直接传入
日期


在Java中使用DateFormat类。这应该很有帮助:

如果您想在数据库中插入日期,我会首先按照Daniel的建议执行:

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

以下是更明确的答案:

从XMLGregorianCalendar实例获取日期的实例:

Date date = xmlCalendar.toGregorianCalendar().getTime();
我从你的电脑里找到了那个密码

使用格式“MM/dd/yyyyy 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转换为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);

您可以看到完整的示例

请使用下面的函数-只需传递所需的XMLGregoriaCalendar实例和日期格式(格式示例:“DD-MMMM-yyyy”->2017年1月1日)

tl;博士 java.time 现代方法使用java.time类取代了麻烦的旧类
Date
Calendar
gregorianalendar

将遗留类转换为java.time

GregorianCalendar gc = myXGC.toGregorianCalendar() ;
ZonedDateTime zdt = gc.toZonedDateTime();
将日期时间值作为日期时间对象而不是字符串传递到数据库

如果您的JDBC驱动程序符合JDBC4.2及更高版本,那么您可以直接处理java.time类型

myPreparedStatement.setObject( … , zdt ) ;
如果驱动程序尚未兼容,请简要转换为java.sql类型

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

这将返回java.util.Date:

java.util.Date tempDate = issueDate.toGregorianCalendar().getTime();

在插入数据库之前,您不会格式化时间戳的副本。您使用java.util.Date类。我看不到getTime()方法。您所说的是与之不同的包吗?@ilinca getTime()方法属于GregorianCalendar类。您需要使用.toGregorianCalendar()方法将XMLGregorianCalendar解析为GregorianCalendar,如上所示。
GregorianCalendar gc = myXGC.toGregorianCalendar() ;
ZonedDateTime zdt = gc.toZonedDateTime();
myPreparedStatement.setObject( … , zdt ) ;
myPreparedStatement.setTimestamp( … , java.sql.Timestamp.from ( zdt.toInstant() ) ) ;
java.util.Date tempDate = issueDate.toGregorianCalendar().getTime();