2010-08-19 62 views
0

這個問題是殺死我,這裏是我的代碼問題用簡單的解析程序

import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 

public class Converter 
{ 
    // 8/12/2010 12:20:34 PM 
    static String DATE_FORMAT = "MM/dd/yyyy h:MM:ss aa"; 

    // from object to xml 
    public static String serializeNCCDate(Date d) 
    { 
     try 
     { 
      System.out.println("serializeNCCDate"); 
      SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT); 
      System.out.println("in from object: " + d.toLocaleString()); 
      String s = sdf.format(d); 
      System.out.println("out to object: " + s); 
      return s; 
     } catch (Exception ex) 
     { 
      return null; 
     } 
    } 

    // from xml to object 
    public static Date deSerializeNCCDate(String s) 
    { 
     try 
     { 
      System.out.println("deSerializeNCCDate"); 
      SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT); 
      System.out.println("in from xml: " + s); 
      Date d = sdf.parse(s); 
      System.out.println("out to object: " + d.toLocaleString()); 
      return d; 
     } catch (ParseException e) 
     { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     return null; 
    } 
} 

然後運行我的測試即時通訊把一個XML文檔轉換成我的XML引擎(JiBX的)轉換爲一個對象,然後把將對象轉換回jibx將其轉換回字符串。當我試圖從我的XML序列化的日期「2010/8/12下午12點二十分34秒」,這是結果我得到

deSerializeNCCDate 
in from xml: 8/12/2010 12:20:34 PM 
out to object: Aug 12, 2011 12:00:34 PM 
serializeNCCDate 
in from object: Aug 12, 2011 12:00:34 PM 
out to object: 08/12/2011 12:08:34 PM 

爲什麼是我多年和分鐘不應該是什麼?似乎每次解析函數被調用的輸出都應該被改變。這是非常簡單的東西,爲什麼它不工作?我可以理解時區差異的時間,但時間和分鐘?

回答

1

您需要m(小寫字母)分鐘,而不是M。有關更多詳細信息,請參閱here

+0

GAHHHH,謝謝我在另一個網站上看到的圖表是錯誤的。嘖嘖,只是浪費了一個小時,感謝 – scphantm 2010-08-19 20:40:20