Java 将jcalendar日期转换为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

我有一些问题,我只是从jCalendar中的jDateChooser获取空值

此方法是将java.util.Date转换为XMlGregorianCalendar的函数:

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();