Java 如何获得两个日期和时间之间的差异

Java 如何获得两个日期和时间之间的差异,java,Java,我想使用JAVA获得end_date_time和system_date_time之间的秒差,例如: if end_date_time = 2015-02-21 13:00:00 system_date_time = 2015-02-20 13:00:00 then difference = 86400 请告诉我如何执行此操作?如果您已经有了日期类型,那么它非常简单: (System.currentTimeMillis() - myDate.getTime()) /

我想使用JAVA获得end_date_time和system_date_time之间的秒差,例如:

if 
    end_date_time = 2015-02-21 13:00:00
    system_date_time = 2015-02-20 13:00:00
then 
    difference = 86400

请告诉我如何执行此操作?

如果您已经有了
日期
类型,那么它非常简单:

(System.currentTimeMillis() - myDate.getTime()) / 1000;
如果您有一个字符串,需要将其转换为日期,则可以使用
SimpleDateFormat
实例:

String dateString = "2015-02-21 13:00:00" // end_date_time
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");
Date myDate = sdf.parse(dateString);
如果您使用的是Java8,那么这就容易多了:

String dateString = "2007-12-03T10:15:30.00Z";
Instant.now().until(Instant.parse(dateString), ChronoUnit.SECONDS);
您的
dateString
必须能够以ISO格式解析,但是:

"yyyy-mm-ddThh:mm:ss.SZ"

真的?在Google中输入
JavaDateTimeDifference站点:stackoverflow.com
时,65812次点击没有一次是好的?如果不是,为什么您希望第65813个会有所不同?:-)可能重复的“否”或“从不”。这并不能解释闰秒、闰年、世纪和千年边界造成的日期漂移。如果正确,请使用适当的库,如JodaTime或java8snewtime。添加了对Java8方法的引用。