Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JodaTime:使用前导连字符分析日期_Java_Jodatime - Fatal编程技术网

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
提供一个日期,它会给你一个有效的
日期
对象。