試圖解析以下時間戳:SimpleDateFormat用於此類RFC時間戳?
2008-09-19T19:05:30.000Z
但是我得到一個ParseException。有沒有人知道可以照顧這一點的類或SimpleDateFormat?
我在斯卡拉現在使用的是什麼(Java的回答工作,太):
new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.Z")
感謝您的幫助。
試圖解析以下時間戳:SimpleDateFormat用於此類RFC時間戳?
2008-09-19T19:05:30.000Z
但是我得到一個ParseException。有沒有人知道可以照顧這一點的類或SimpleDateFormat?
我在斯卡拉現在使用的是什麼(Java的回答工作,太):
new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.Z")
感謝您的幫助。
而且單引號('
)的Z
左右。這指示解析器將Z
視爲一個常量字符(就像T
)。還要在毫秒中加上SSS
。因此你的模式將是yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
這片從谷歌客戶端庫代碼的伎倆:
使用parseRFC3339方法。
刪除Z
:
> sdf = new java.text.SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss")
> println sdf.parse("2008-09-19T19:05:30.000Z")
Fri Sep 19 19:05:30 EDT 2008
瞧,工作謝謝! – crockpotveggies
這是一個次優的答案,它依賴於SimpleDateFormat不匹配格式字符串後的任何內容。看到http://stackoverflow.com/questions/8428313/simpledateformat-parsestring-str-didnt-been-throw-when-str-2011-12-12aaaaaa –
@SteveKuo同意,如果OP實際*需要*毫秒...無論如何,這是一個帶有「Date」的痛苦。當然,你還需要'setLenient(false)',否則非精確模式可能仍然匹配。 –
我可以證實這也起作用,並將其切換爲答案,原因是它佔了ms – crockpotveggies
@DeLongey(你無法從日期中獲得微不足道的方式)。如果您必須匹配模式*完全*,你必須*也* setLenient(false)'或它將匹配不精確的模式。 –