Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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 两个日期的差异_Java_Date - Fatal编程技术网

Java 两个日期的差异

Java 两个日期的差异,java,date,Java,Date,我需要得到以下两个日期之间的差异。两个日期都是字符串格式 String sDate1 = Thu Jun 26 13:45:32 IST 2018; String sDate2 = Thu Jul 16 03:25:37 IST 2018; Date date1 = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy").parse(sDate1); Date date2 = new SimpleDateFormat("EEE MMM dd H

我需要得到以下两个日期之间的差异。两个日期都是字符串格式

String sDate1 = Thu Jun 26 13:45:32 IST 2018;
String sDate2 = Thu Jul 16 03:25:37 IST 2018;

Date date1 = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy").parse(sDate1);
Date date2 = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy").parse(sDate2)
long dateDiff2 = date2.getTime() - date1.getTime();
试试这个:-

String sDate1 = Thu Jun 26 13:45:32 IST 2018;
String sDate2 = Thu Jul 16 03:25:37 IST 2018;

Date d1= new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy").parse(sDate1);
Date d2= new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy").parse(sDate2); 
long diff = d2.getTime() - d1.getTime();
long diffSeconds = diff / 1000 % 60;
long diffMinutes = diff / (60 * 1000) % 60;
long diffHours = diff / (60 * 60 * 1000);
System.out.println("Time in seconds: " + diffSeconds + " seconds.");
System.out.println("Time in minutes: " + diffMinutes + " minutes.");
System.out.println("Time in hours: " + diffHours + " hours.");
或者您可以使用时间单位:-

long diffInSeconds = TimeUnit.MILLISECONDS.toSeconds(diff );
long diffInMinutes = TimeUnit.MILLISECONDS.toMinutes(diff );
long diffInHours = TimeUnit.MILLISECONDS.toHours(diff );
引号 您忘记了输入字符串周围的双引号

java.time 您使用的是多年前由java.time类过时的糟糕的旧类

解析 使用
DateTimeFormatter
解析输入字符串以获取
ZonedDateTime
对象。搜索堆栈溢出,因为这已被多次讨论

逝去
要计算经过的小时、分钟和秒,请将这些
ZoneDateTime
对象传递给
Duration.between
方法。对于年、月、日,请使用
Period
。搜索堆栈溢出,因为这已被多次讨论

你的问题是?你有什么问题?看起来您已经有毫秒差异。@Samankumara不工作不是错误描述。将得到的结果和预期结果相加result@TimBiegeleisen落选的主要原因归结为这样一个事实:这个问题很常见,有许多可用的答案,你永远不应该简单地对日期/时间值进行数学计算,关于如何进行这些计算,有太多的规则,不能使用适当的API或APIlibrary@Samankumara所以,你有两个问题。1-如何将字符串值转换为日期值,2-如何计算这些日期值之间的差异。这两个问题都很常见,在这些可怕的类多年前被java.time类取代之前就已经被问过了。2018年的建议很糟糕。我同意你们的观点,但对于bigners来说,这是做其他事情的正确方式,他也可以使用jodaTime。不,那些课程对初学者来说是一件可怕的事情,糟糕的设计和糟糕的黑客会让任何试图学习编程和面向对象编程的人感到困惑。Joda Time项目现在处于维护模式,其inventor已经开始创建java.Time。