我必須使用SimpleDateFormat
解析Java中的日期。我正在使用以String
和SimpleDateFormat
實例解析它的日期的現有庫。 一切都很好,但如果日期格式只包含自紀元時間(1970年1月1日)以來的毫秒數,即UNIX時間(以毫秒爲單位),則遇到問題。使用new SimpleDateFormat("SS")
或new SimpleDateFormat("SSS")
沒有工作:僅有毫秒的SimpleDateFormat
代碼重現奇怪SimpleDateFormat
行爲:
TimeZone.setDefault(TimeZone.getTimeZone("GMT")); // just for the test
long currTimeInMilli = System.currentTimeMillis();
SimpleDateFormat msSDF = new SimpleDateFormat("SS"); // same result with SimpleDateFormat("SSS")
SimpleDateFormat secSDF = new SimpleDateFormat("ss");
System.out.println(msSDF.parse("" + currTimeInMilli));
System.out.println(secSDF.parse("" + (currTimeInMilli/1000)));
System.out.println(new SimpleDateFormat("EEE MMM dd HH:mm:ss zz yyyy").format(currTimeInMilli));
產生的輸出:
Mon Dec 15 07:46:20 GMT 1969 <-- should be like two other lines (?)!
Mon Apr 28 20:55:19 GMT 2014 <-- OK
Mon Apr 28 20:55:19 GMT 2014 <-- OK
它是正常的嗎?我怎樣才能設置一個SimpleDateFormat
能夠解析自時代以來經過的毫秒數?
注:
- 我不能用到其他庫一樣喬達時間
- 我不能用
new Date(long pNbMilli)
構造日期(傳統圖書館正在採取SimpleDateFormat
實例作爲輸入) - 我發現這filed JDK bug但不知道它是直接綁定到這個問題...
並且沒有日曆允許? –
@Rod_Algonquin no::( – xav