/** * Calculates the age in years at the given point in time * out of a given birthday (as double) * * @param calendar_birthday * @param calendar_ageAtThisDate * @return */ function calculateAge (calendar_birthday, calendar_ageAtThisDate) { /* ======================================== */ // IMPORTS importPackage(java.util); // prepare the data var yearOfBirth = calendar_birthday.get(Calendar.YEAR); var dayOfBirth = calendar_birthday.get(Calendar.DAY_OF_YEAR); var yearOfMeasuring = calendar_ageAtThisDate.get(Calendar.YEAR); var dayOfMeasuring = calendar_ageAtThisDate.get(Calendar.DAY_OF_YEAR); var maxDaysOfYear = calendar_ageAtThisDate.getActualMaximum( Calendar.DAY_OF_YEAR); // calculate the age var age = yearOfMeasuring - yearOfBirth; if (dayOfBirth < dayOfMeasuring) { /* The patient's birthday of this year way BEFORE the measuring. * => Calculate the year as floating number */ age += (dayOfMeasuring - dayOfBirth) / maxDaysOfYear; } else if (dayOfBirth > dayOfMeasuring) { /* The patient's birthday of this year way AFTER the measuring. * => Calculate the year as floating number */ age--; age += (dayOfMeasuring + maxDaysOfYear - dayOfBirth) / maxDaysOfYear; } return age; /* ======================================== */ }