Java 将jcalendar日期转换为XMLGregorianCalendar以获取空值
我有一些问题,我只是从jCalendar中的jDateChooser获取空值 此方法是将java.util.Date转换为XMlGregorianCalendar的函数:Java 将jcalendar日期转换为XMLGregorianCalendar以获取空值,java,date,datetime,null,gregorian-calendar,Java,Date,Datetime,Null,Gregorian Calendar,我有一些问题,我只是从jCalendar中的jDateChooser获取空值 此方法是将java.util.Date转换为XMlGregorianCalendar的函数: DatatypeFactory df; public XMLGregorianCalendar function_ConvertAsXMLGregorianCalendar(Date date) { if (date == null) { System.out.println("Error on Fun
DatatypeFactory df;
public XMLGregorianCalendar function_ConvertAsXMLGregorianCalendar(Date date) {
if (date == null) {
System.out.println("Error on Function Convert Date into XML Gregorian Calendar");
return null;
} else {
GregorianCalendar gc = new GregorianCalendar();
gc.setTimeInMillis(date.getTime());
return df.newXMLGregorianCalendar(gc);
}
}
这是两个函数,分别是getStart和getEnd日期
private XMLGregorianCalendar getStartDate(){
Date dateStarting = jDateChooserStart.getDate();
System.out.println("Date Start : " + dateStarting.toString());
XMLGregorianCalendar cal = function_ConvertAsXMLGregorianCalendar(dateStarting);
System.out.println("Converted Date : " + cal.toXMLFormat());
return cal;
}
private XMLGregorianCalendar getEndDate(){
Date dateEnding = jDateChooserEnd.getDate();
System.out.println("Date End : " + dateEnding);
return function_ConvertAsXMLGregorianCalendar(dateEnding);
}
然后我将该方法放在一个名为schedule的对象中:
schedule.setStartDate(getStartDate());
schedule.setEndDate(getEndDate());
来自Netbeans的结果(v7.1)
怎么了
谢谢你
更新::
我只是将函数改为:
public XMLGregorianCalendar function_ConvertAsXMLGregorianCalendar(Date date) {
if (date == null) {
System.out.println("Error on Function Convert Date into XML Gregorian Calendar");
return null;
} else {
GregorianCalendar gc = new GregorianCalendar();
gc.setTimeInMillis(date.getTime());
DatatypeFactory df = null;
return df.newXMLGregorianCalendar(gc);
}
}
更新2::
初始化newInstance()方法后,我遇到另一个错误:
java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Date
我只是将包名从
java.util.Date into java.SQL.Date
然后铸造:
Date dateStarting = (Date) jDateChooserStart.getDate();
Date dateEnding = (Date) jDateChooserEnd.getDate();
如何解决这个问题
再次感谢。虽然代码中没有正确的行号并不明显,但引起
NullPointerException
的最可能原因是行:
return df.newXMLGregorianCalendar(gc);
您的
df
为空。在哪里初始化此字段?似乎声明了df
,但未实例化:
DatatypeFactory df;
从这里开始:
df.newXMLGregorianCalendar(gc);
^
您可以先使用来实例化,如下所示:
DatatypeFactory df = DatatypeFactory.newInstance();
我并不完全理解你的问题,但在我看来,这是一个简单的解决办法,像这样调用你的日历应该会工作(我认为)
您仍然没有实例化df,请参见下面我的更新。是的,我需要实例化df变量。谢谢您的评论hi there@Reimeus您能再次帮助我吗?谢谢,但是也许在一个新的问题帖子里?嗨@Reimeus我刚刚在新的问题帖子里发布了:啊哈,谢谢Reimeus。这就是答案。我需要先创建newInstance()。是的,我只是忘记放置初始化方法@akf你能再帮我一次吗?(更新2#)请。谢谢
DatatypeFactory df = DatatypeFactory.newInstance();
Calendar timeStamp = new GregorianCalendar();