Как рассчитать количество различий между двумя календарем в Java?Как рассчитать разницу в годах между двумя датами?
ответ
Сначала вам нужно определить, какой из них старше другого. Затем используйте цикл while
, в котором вы тестируете, если старший не after()
более новый. Вызовите Calendar#add()
с одним (1
) Calendar.YEAR
на старом, чтобы добавить годы. Держите счетчик, чтобы подсчитать годы.
Kickoff пример:
Calendar myBirthDate = Calendar.getInstance();
myBirthDate.clear();
myBirthDate.set(1978, 3 - 1, 26);
Calendar now = Calendar.getInstance();
Calendar clone = (Calendar) myBirthDate.clone(); // Otherwise changes are been reflected.
int years = -1;
while (!clone.after(now)) {
clone.add(Calendar.YEAR, 1);
years++;
}
System.out.println(years); // 32
Это говорит, что Date
и Calendar
API, в Java SE на самом деле являются эпические неудачи. Появился новый API Date при планировании предстоящей Java 8, JSR-310, который очень похож на Joda-Time. Как сейчас вы можете рассмотреть Joda-Time, так как это действительно облегчает вычисления/модификации даты и времени. Вот пример использования Joda-Time:
DateTime myBirthDate = new DateTime(1978, 3, 26, 0, 0, 0, 0);
DateTime now = new DateTime();
Period period = new Period(myBirthDate, now);
int years = period.getYears();
System.out.println(years); // 32
Гораздо более понятный и лаконичный, не так ли?
Или вы могли бы просто использовать Calendar.getTimeInMillis()
:
long msYear = 1000L * 60 * 60 * 24 * 365;
long msDiff = c2.getTimeInMillis() - c1.getTimeInMillis();
System.out.println("Years diff: " + String.valueOf(msDiff/msYear));
Редактировать Это игнорирует високосными. Но если вы ищете целочисленное представление количества лет, то високосные годы не имеют значения для периодов, которые меньше половины тысячелетия или около того.
Это, пожалуй, большая точность для расчета чей-то возраста. Но не достаточно точно, чтобы рассказать о своем дне рождения.
Если вам нужна ваша разница в году более точная, чем до трех значащих цифр в течение жизни человека (приблизительно 80,00 лет против 80,05), вы должны использовать «официальное» решение.
Если нет, нет особых причин для дополнительных усилий для определенной точности, которую вы не собираетесь использовать.
Имеет ли этот счет високосные годы, прыжки минут и т. Д.? –
Nope. Предполагая, что если вы ищете несколько лет, вы не слишком беспокоитесь о несоответствии дня или двух. Если вы посмотрите точную длину года в Википедии, вы можете получить ее как можно ближе к вам в долгосрочной перспективе. –
@ Ник: прыжок * минуты * ?? –
Calendar dobDate; // Set this to date to check
Calendar today = Calendar.getInstance();
int curYear = today.get(Calendar.YEAR);
int curMonth = today.get(Calendar.MONTH);
int curDay = today.get(Calendar.DAY_OF_MONTH);
int year = dobDate.get(Calendar.YEAR);
int month = dobDate.get(Calendar.MONTH);
int day = dobDate.get(Calendar.DAY_OF_MONTH);
int age = curYear - year;
if (curMonth < month || (month == curMonth && curDay < day)) {
age--;
}
Это позволяет избежать зацикливания и быть точным на весь день.
double diff = d2.getTime() - d1.getTime();
double d = 1000 * 60 * 60 * 24 * 365;
return (int) Math.round(diff/d);
(java.lang.Math)
Примечание: Остерегайтесь високосных годов и других подобных календарных странностей. – michaelb958
- 1. Рассчитать разницу между двумя датами
- 2. рассчитать разницу между двумя датами
- 3. Рассчитать разницу между двумя датами
- 4. JScript: Как рассчитать разницу между двумя датами?
- 5. Рассчитать разницу между двумя датами и временем
- 6. javascript: рассчитать разницу между двумя датами
- 7. рассчитать разницу между двумя датами php
- 8. Попытка рассчитать разницу между двумя датами
- 9. Pythonic разница между двумя датами в годах?
- 10. разницы в годах между двумя датами
- 11. Как рассчитать разницу между датами
- 12. Как рассчитать разницу между двумя датами в годах ... и т.д. с Joda-Time
- 13. Как рассчитать разницу в днях между двумя датами в GWT?
- 14. Как я могу рассчитать разницу между двумя датами в неделях?
- 15. Как рассчитать разницу между двумя датами в ElasticSearch
- 16. Как рассчитать возраст или разницу между двумя датами в java
- 17. Как рассчитать количество дней (разницу) между двумя датами в PHP?
- 18. Как рассчитать разницу между двумя датами в PHP?
- 19. Как рассчитать разницу между двумя датами в django
- 20. Как рассчитать разницу между двумя датами в рабочие дни
- 21. как рассчитать разницу между двумя датами в секундах?
- 22. Рассчитать время между двумя датами
- 23. html рассчитать разницу между датами
- 24. рассчитать разницу между датами в сценарии оболочки
- 25. Как рассчитать разницу в днях между датами
- 26. Как рассчитать разницу во времени между двумя датами:
- 27. Как рассчитать разницу между двумя датами из виджета DatePicker
- 28. Как рассчитать разницу между двумя датами с помощью PHP?
- 29. Как рассчитать разницу во времени между двумя датами - MySql
- 30. как рассчитать разницу во времени между двумя датами? - MySql
или Years.yearsBetween (myBirthDate, сейчас) .getYears(); – mtpettyp
Я не могу создать объект периода. Кажется, что я закрыт под java.util.time ... вы можете помочь мне, пожалуйста, как я могу найти разницу в году с помощью Period ?? –
@ Mr.Noddy: фрагмент кода - это JodaTime, а не JavaTime. В JavaTime используйте 'Period # between()'. См. Также javadoc https://docs.oracle.com/javase/8/docs/api/java/time/Period.html – BalusC