Я новичок в java. У меня есть небольшая путаница относительно арифметики даты в java. Я следующий сценарий, где я хочу, чтобы найти различие между двумя датами: -Найти разницу между датами в java
java.util.Date objDt1 = getDate1FromSrc1(); // I am obtaining it from src1
java.util.Date objDt2 = getDate2FromOtherSrc(); // I am getting dt2 by other way.
Теперь я хочу, чтобы найти разницу между двумя датами и выходом должен быть другим объектом даты.
Итак, я написал следующий код: -
Calendar objCal1 = Calendar.getInstance();
Calendar objCal2 = Calendar.getInstance();
objCal1.setTime(objDt1);
objCal2.setTime(objDt2);
objCal1.add(Calendar.DAY_OF_MONTH, -objCal2.get(Calendar.DAY_OF_MONTH));
objCal1.add(Calendar.MONTH, -objCal2.get(Calendar.MONTH));
objCal1.add(Calendar.YEAR, -objCal2.get(Calendar.YEAR));
objCal1.add(Calendar.HOUR_OF_DAY, -objCal2.get(Calendar.HOUR_OF_DAY));
objCal1.add(Calendar.MINUTE, -objCal2.get(Calendar.MINUTE));
objCal1.add(Calendar.SECOND, -objCal2.get(Calendar.SECOND));
java.util.Date objDiff = objCal1.getTime();
Но, я получаю некоторые результаты странные. Например. Если objDt1 равен "02/22/2016 09:00:00"
, а objDt2 - "02/22/2016 11:00:00"
, тогда я ожидаю, что objDiff будет "02:00:00"
в качестве вывода, который я не получаю.
Можете ли вы предложить мне, что не так, что я здесь делаю и как правильно подойти к этой проблеме?
Заранее спасибо.
Работа с датами трудна. Эти годы не просто исчезнут. Попробуйте 'Period' в новых классах Java 8 date, если сможете. –
@EvanKnowles, я не могу использовать java 8, я использую java7. –
@ user2393267 Для Java 7 вы можете использовать проект [ThreeTen-Backport] (http://www.threeten.org/threetenbp/), который является основным компонентом функции java.time. Построены теми же людьми. Или используйте [Joda-Time] (http://www.joda.org/joda-time/), основу, которая вдохновила java.time (также созданная теми же людьми). Старые классы с датой и временем действительно настолько плохи, что вам следует избегать их. –