转换jcalendar日期到的XMLGregorianCalendar获取空值(Convert jc

2019-10-17 04:52发布

我有一些问题,我只是在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);
    }
}

这是2功能,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.setStartDate(getStartDate());
schedule.setEndDate(getEndDate());

从Netbeans的结果(V7.1)

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Frames.CreateSchedule.function_ConvertAsXMLGregorianCalendar(CreateSchedule.java:181)
at Frames.CreateSchedule.getStartDate(CreateSchedule.java:188)
at Frames.CreateSchedule.SubmitButtonActionPerformed(CreateSchedule.java:204)
at Frames.CreateSchedule.access$000(CreateSchedule.java:16)

怎么了?

谢谢了。

更新::

我只是改变了功能到这个:

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

如何解决这个问题?

再次感谢。

Answer 1:

看来, df的已宣告但尚未实例:

DatatypeFactory df;

从这里:

df.newXMLGregorianCalendar(gc);
^

您可以使用DatatypeFactory.newInstance()第一个实例,就像这样:

DatatypeFactory df = DatatypeFactory.newInstance(); 


Answer 2:

虽然不是很明显,而无需在适当的代码行数,则最有可能的原因NullPointerException是线路:

  return df.newXMLGregorianCalendar(gc);

df被空。 你在哪里初始化这个领域?



Answer 3:

我不完全理解你的问题,但在我看来,这是一个简单的办法打电话给你的日历像这应该工作(我认为)。

Calendar timeStamp = new GregorianCalendar();


文章来源: Convert jcalendar Date into XMLGregorianCalendar Getting Null Value