【问题标题】:Scala Date Format issueScala日期格式问题
【发布时间】:2012-12-01 00:29:11
【问题描述】:

我有代码 sn-p 在 scala 和 java 中给出不同的输出。我想要和Java一样的输出,请任何人指导。

Java 输出:2012-12-13T10:36:38
Scala 中的输出:2012-12-13T10:35:38.000+04:00

/**
 * Convert the datetime to XMLGregorianCalendar datetime format.
 * <br><h6>Example Date format You have to Give is : </h6>
 * new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss").format(Calendar.getInstance().getTime())) 
 * <br>1900-01-01T00:00:00
 */
public static XMLGregorianCalendar stringToXMLGregorianCalendar(String datetime) throws Exception {

    try {
        if(datetime == null || "".equals(datetime))
            return null;
        GregorianCalendar gc = (GregorianCalendar) GregorianCalendar.getInstance();
        gc.setTime(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss").parse(datetime));
        return DatatypeFactory.newInstance().newXMLGregorianCalendar(gc);
    } catch (DatatypeConfigurationException e) {
        logger.error(e.fillInStackTrace());
        throw new Exception(e.fillInStackTrace());
    }
}

【问题讨论】:

  • 向我们展示您的 Scala 代码。

标签: java scala scala-2.8


【解决方案1】:

也许您应该更改时区

val d = new java.text.SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss").format(java.util.Calendar.getInstance().getTime())
val gc: java.util.GregorianCalendar = classOf[java.util.GregorianCalendar].newInstance().asInstanceOf[java.util.GregorianCalendar];     gc.setTime(new java.text.SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss").parse(d));
gc.getTime
gc.getTimeZone

结果:

res6: java.util.Date = Thu Dec 13 17:21:50 GMT+02:00 2012
res7: java.util.TimeZone = sun.util.calendar.ZoneInfo[id="GMT+02:00",offset=7200000,dstSavings=0,useDaylight=false,transitions=0,lastRule=null]

【讨论】:

  • 嗨,谢谢您的回答,但我期待一个特定的结果,我必须将其传递给其他一些课程,您如何在下面看到我如何处理的答案。
【解决方案2】:

我已经解决了问题,请在下面找到解决方案。

我在上面的代码中将时区和毫秒设置为未定义。

xgc.setMillisecond(DatatypeConstants.FIELD_UNDEFINED) xgc.setTimezone(DatatypeConstants.FIELD_UNDEFINED)

    try {
        if (datetime == null || "".equals(datetime))
            return null
        val gc = new GregorianCalendar()
        gc.setTime(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss").parse(datetime))
        val xgc = DatatypeFactory.newInstance().newXMLGregorianCalendar(gc)
        xgc.setMillisecond(DatatypeConstants.FIELD_UNDEFINED)
        xgc.setTimezone(DatatypeConstants.FIELD_UNDEFINED)
        return xgc
    } catch {
        case e: DatatypeConfigurationException => logger.error(e.fillInStackTrace()); throw new Exception(e.fillInStackTrace())
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-20
    • 2014-04-01
    • 1970-01-01
    • 2016-01-25
    相关资源
    最近更新 更多