tag:blogger.com,1999:blog-6854785778600043125.post3506947881632152839..comments2019-08-05T20:31:47.743+09:00Comments on めりくるくるりん: InternetDateFormat for RFC3339Bladean Mericle(ブレーディア・メリクル)http://www.blogger.com/profile/10359089800671258359noreply@blogger.comBlogger2125tag:blogger.com,1999:blog-6854785778600043125.post-9940804433606391102017-09-17T23:48:50.579+09:002017-09-17T23:48:50.579+09:00Thanks!Thanks!Bladean Mericle(ブレーディア・メリクル)https://www.blogger.com/profile/10359089800671258359noreply@blogger.comtag:blogger.com,1999:blog-6854785778600043125.post-7072784789437338272016-05-27T23:08:05.464+09:002016-05-27T23:08:05.464+09:00Hi, thanks for sharing your code.
I found a little...Hi, thanks for sharing your code.<br />I found a little tricky situation where "magic" milliseconds are not correct when parsing a date formatted in String:<br /><br />Code<br />--------<br />String date = "2016-05-27T12:01:02+02:00"; // no milliseconds<br />InternetDateFormat dateFormat = new InternetDateFormat(true, 3); // have 3 digits for milliseconds<br />Date d = dateFormat.parse(date);<br />System.out.println("before: " + date + " (" + d.getTime() + " ms)");<br />System.out.println("after: " + dateFormat.format(d));<br /><br />Output (where 885 milliseconds appeared)<br />-------<br />before: 2016-05-27T12:01:02+02:00 (1464339662885 ms)<br />after: 2016-05-27T11:01:02.885+01:00<br /><br />How to fix<br />----------<br />In method "parse(String source, ParsePosition pos)" <br /><br />if (source.substring(pos.getIndex()).startsWith(".")) {<br /> pos.setIndex(pos.getIndex() + 1);<br /> parseCalendar.set(Calendar.MILLISECOND, parseFractionalSeconds(source, pos));<br />}<br />else { // <----------------------------------------------------------- ADD THIS<br /> parseCalendar.set(Calendar.MILLISECOND, 0); // <---------------- ADD THIS<br />} // <---------------------------------------------------------------- ADD THIS<br /><br />Loïc, loic DOT monney @@@ hefr DOC chUnknownhttps://www.blogger.com/profile/11415905226163879122noreply@blogger.com