与 JodaTime
DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss'Z'").withZone(DateTimeZone.UTC);
java.util.Date parsedDate = dtf.parseDateTime("-012-10-25T10:03:22Z").toDate();
System.out.println(parsedDate)
打印
'Tue Oct 27 04:03:22 CST 13'
正如您所知,本地时区是 CST。
我预计会抛出异常,因为传递的日期不是预期的格式。或者可能是 NumberFormatException,“-”不是数字
最佳答案
Joda 支持零之前的年份(请参阅 DateTimeConstants.BC
,这意味着基督之前)。
因此,Joda 将 -012-10-25T10:03:22Z
视为公元前 12 年。
DateTime d = dtf.parseDateTime("-012-10-25T10:03:22Z");
System.out.println(d.getEra()); // returns 0 -> that means B.C. era Before Christ
System.out.println(d.getYear()); // returns -12
如果你想抛出异常,那么你应该手动执行,因为在这种情况下Joda不会抛出异常。做一些像
DateTime dateTimeParser(String dateAsString)
{
DateTime res = dtf.parseDateTime(dateAsString);
if (d.getYear() < 0) throw new IllegalArgumentException();
return res;
}
或者使用SimpleDateFormat解析日期
关于java - JodaTime:解析带有前导连字符的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13809682/