Java JodaTime:使用前导连字符分析日期
与乔达蒂姆Java JodaTime:使用前导连字符分析日期,java,jodatime,Java,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
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
我希望抛出一个异常,因为传递的日期不是预期的格式。或者可能是数字格式,因为“-”不是一个数字约达支持零年之前的年份(参见
DateTimeConstants.BC
意思是在基督之前)。因此,约达对待
-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;
}
DateTime-dateTimeParser(字符串dateAsString)
{
DateTime res=dtf.parseDateTime(dateAsString);
如果(d.getYear()<0)抛出新的IllegalArgumentException();
返回res;
}
或者用于解析
Date
Joda支持零之前的年份(请参见DateTimeConstants.BC
,意思是在基督之前)。因此,约达对待
-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;
}
DateTime-dateTimeParser(字符串dateAsString)
{
DateTime res=dtf.parseDateTime(dateAsString);
如果(d.getYear()<0)抛出新的IllegalArgumentException();
返回res;
}
或者用于解析
Date
我认为它将-012
视为一个数字,该日期中的.getYear()
是-1887
当您在for pattern
方法中指定模式时,必须以该格式向解析日期时间提供一个日期,它会给你一个有效的Date
对象。我认为它将-012
视为一个数字,该日期中的.getYear()
是-1887
当你在for pattern
方法中指定一个模式时,你必须以该格式向parseDateTime
提供一个日期,它会给你一个有效的日期
对象。