這是一個ISO 8061 date time
事實上,至少在Java8這是非常簡單的解析一個是有預定義DateTimeFormatter
。這裏一個小單元測試的演示:
import org.junit.Test;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import static org.junit.Assert.assertEquals;
public class DateTimeFormatterTest {
@Test
public void testIsoDateTimeParse() throws Exception {
// when
final ZonedDateTime dateTime = ZonedDateTime.parse("2013-03-31T16:46:38.000Z", DateTimeFormatter.ISO_DATE_TIME);
// then
assertEquals(2013, dateTime.getYear());
assertEquals(3, dateTime.getMonthValue());
assertEquals(31, dateTime.getDayOfMonth());
assertEquals(16, dateTime.getHour());
assertEquals(46, dateTime.getMinute());
assertEquals(38, dateTime.getSecond());
assertEquals(ZoneOffset.UTC, dateTime.getZone());
}
}
此前Java8,我會看看Converting ISO 8601-compliant String to java.util.Date和definitley默認使用Joda Time with sth。是像:
final org.joda.time.DateTime dateTime = new org.joda.time.DateTime.parse("2013-03-31T16:46:38.000Z");
BTW,不要使用new DateTime("2013-03-31T16:46:38.000Z")
,因爲它會使用默認的時區,這可能不是你想要的。
來源
2015-11-24 17:13:40
spa
SimpleDateFormat將能夠解析您拋出的任何日期字符串。你只需要告訴它預期它的格式。另外,我相信Apache Commons Lang具有一些日期解析能力,可以簡化事情。 – CodeChimp
我也這麼認爲,但是 java.text.ParseException:Unparseable date:「2013-03-31T16:46:38.000Z」 –