2012-12-13 172 views
1

我有在scala和java中給出不同輸出的代碼片段。我想要和Java一樣的輸出,請引導任何人。Scala日期格式問題

輸出在Java中:2012-12-13T10:36:38
輸出斯卡拉: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()); 
    } 
} 
+2

向我們展示你的Scala代碼。 – Jesper

回答

0

我已經解決了這個問題請找到解決方案流。

我已經在上面的代碼中設置了未定義的時區和毫秒。

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()) 
    } 
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] 
+0

嗨謝謝你的答案,但我期待一個具體的結果,我必須傳遞給其他類,你怎麼能看到下面的答案如何處理。 – Azhar