Java 输入并比较两个日期

Java 输入并比较两个日期,java,date,Java,Date,我对日期对象不是很熟悉,所以我想问一下,我该如何要求用户输入与以下方法兼容的日期,以找出天数的差异: public long diferenciaFecha(LocalDate pfecha1, LocalDate pfecha2){ LocalDate fecha1 = pfecha1; LocalDate fecha2 = pfecha2; Period p = Period.between(fecha1, fecha2); long resul = ChronoUnit

我对日期对象不是很熟悉,所以我想问一下,我该如何要求用户输入与以下方法兼容的日期,以找出天数的差异:

 public long diferenciaFecha(LocalDate pfecha1, LocalDate pfecha2){
  LocalDate fecha1 = pfecha1;
  LocalDate fecha2 = pfecha2;

  Period p = Period.between(fecha1, fecha2);
  long resul = ChronoUnit.DAYS.between(fecha1, fecha2);

  System.out.println(" Han pasado: " + resul + " dias.)");

  return resul;

      }   
 }
输入格式是什么样的


提前多谢

与时间相关的编程可能会非常令人沮丧。时态类被发明来帮助操作时间值,并帮助将文本和数值转换为时间值。如果您使用的是像LocalDate和ChronoUnit这样的Java类,您可以在Oracle的网站上通过简单的google搜索类名来查找它们

如果你在时间上有困难,我强烈建议你复习一下时态课程,因为当你开始处理时间和时区等问题时,它会更复杂

“公共最终类LocalDate”

扩展对象

实现时态、时态调整器、时态CalDate、可序列化

ISO-8601日历系统中没有时区的日期,如2007-12-03。“


您的代码似乎正在使用java 8中的新java.time包。当然,请查看
import
语句

LocalDate类使用s来创建实例,而不是构造函数。有关几种方法,请参见

LocalDate now = LocalDate.now ( ZoneId.of( "America/Montreal" ) );
或者

如果用户正在输入文本,则解析为数字

LocalDate localDate = LocalDate.of( Integer.parseInt( "2014") , Integer.parseInt( "1") , Integer.parseInt( "23") );
或以标准格式解析为一个字符串

对于其他格式,请在堆栈溢出中搜索使用类解析字符串的许多讨论和示例


关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,&

该项目现已启动,建议迁移到类

要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是

使用兼容的或更高版本,您可以直接与数据库交换java.time对象。不需要字符串,也不需要java.sql.*类

从哪里获得java.time类

  • ,及以后
    • 内置的
    • 标准JavaAPI的一部分,带有捆绑实现
    • Java9添加了一些次要功能和修复
    • 大部分java.time功能都在中向后移植到Java6和Java7
    • 更高版本的Android捆绑包实现了java.time类
    • 对于早期的Android,该项目采用了ThreeTen Backport(如上所述)。看
该项目使用其他类扩展了java.time。这个项目是java.time将来可能添加的一个试验场。您可以在这里找到一些有用的类,例如、、和

LocalDate localDate = LocalDate.of( Integer.parseInt( "2014") , Integer.parseInt( "1") , Integer.parseInt( "23") );
LocalDate localDate = LocalDate.parse( "2014-01-23" ) ;