java - 将 jcalendar 日期转换为 XMLGregorianCalendar 获取 Null 值

标签 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 Function Convert Date into XML Gregorian Calendar");
        return null; 
    } else {
        GregorianCalendar gc = new GregorianCalendar();
        gc.setTimeInMillis(date.getTime());
        return df.newXMLGregorianCalendar(gc);
    }
}

这是 getStart 和 getEnd 日期的 2 个函数。

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) 的结果

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

如何解决这个问题?

再次感谢。

最佳答案

看起来 df 已声明但未实例化:

DatatypeFactory df;

从这里开始:

df.newXMLGregorianCalendar(gc);
^

您可以使用DatatypeFactory.newInstance()首先实例化,如下所示:

DatatypeFactory df = DatatypeFactory.newInstance(); 

关于java - 将 jcalendar 日期转换为 XMLGregorianCalendar 获取 Null 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12130680/

相关文章:

java - 为使用 vector 创建的 jTable 添加带有复选框的新列

mysql - 缩小在 mysql 中的日期添加的行

java - Java 中日历的字符串时间戳?

java - 从 xmlGregorianCalender 到具有特定格式的日期

java - java.util.Date 和 XMLGregorianCalendar 之间的简单转换

java - 无法在 java 动态 Web 项目(Eclipse、Tomcat)中更新 Mysql 数据库

java - 将项目添加到资源文件

c# - 获取不同开始日期的周数

PHP。为什么日期对象 diff on month 在 12 个月后重置为 0?

Java:如何从包含更多参数类型的列表中仅返回一种参数类型的对象?