【问题标题】:Convert date to XMLGregorianCalendar将日期转换为 XMLGregorianCalendar
【发布时间】:2012-02-29 02:36:13
【问题描述】:

我在 UI 中有以下格式的日期..

Eg: Thu. 03/01

我将它们转换为 XMLGregorianCalendar,如下所述。

final DateFormat format = new SimpleDateFormat("E. M/d");
final String dateStr = closeDate;
final Date dDate = format.parse(dateStr);

GregorianCalendar gregory = new GregorianCalendar();
gregory.setTime(dDate);

XMLGregorianCalendar dealCloseDate = DatatypeFactory.newInstance()
.newXMLGregorianCalendar(gregory);

我的输出是“3/06/70 05:00 AM”而不是“3/06/2011 05:00 AM”。获得正确年份所需的更改是多少。

【问题讨论】:

  • @Hovercraft Full Of Eels...对此我深表歉意。我没有得到任何回复,所以我认为我的 Q 无法理解,我不得不删除它们。再次抱歉。

标签: java datetime date


【解决方案1】:

您没有提及在此日期转换中应该如何表示年份,但这里有一些伪代码可以帮助您入门。请注意,在此示例中,我没有明确处理时区:

final DateFormat format = new SimpleDateFormat("E. M/d");
final String dateStr = "Thu. 03/01";
final Date date = format.parse(dateStr);

GregorianCalendar gregory = new GregorianCalendar();
gregory.setTime(date);

XMLGregorianCalendar calendar = DatatypeFactory.newInstance()
        .newXMLGregorianCalendar(
            gregory);

【讨论】:

    【解决方案2】:

    我做了下面的代码来实现同样的效果。可能是一个冗长的代码,但工作正常。

    def gregorianCalendar = new GregorianCalendar()
        def xmlGregorianCalendar = newInstance().newXMLGregorianCalendar(gregorianCalendar)
    
        if (//past date is needed) {
            def date = xmlGregorianCalendar.toGregorianCalendar().time
            def cal = Calendar.getInstance()
            cal.setTime(date)
            cal.add(Calendar.DATE,-3); //subtract 3 days
            date.setTime(cal.getTime().getTime())
            gregorianCalendar.setTime(date)
            xmlGregorianCalendar =  newInstance().newXMLGregorianCalendar(gregorianCalendar)
        }
    

    【讨论】:

      猜你喜欢
      • 2019-08-20
      • 2019-08-24
      • 1970-01-01
      • 2013-05-18
      • 1970-01-01
      • 1970-01-01
      • 2012-09-12
      • 2014-01-25
      • 2019-12-18
      相关资源
      最近更新 更多