Mỗi tuổi tròn được tính từ ngày, tháng sinh dương lịch của năm trước đến ngày, tháng sinh dương lịch của năm sau.
Thuật toán:
- Quy ước, ký hiệu:
- Ngày = ngày/tháng/năm = d/m/y
- Ngày sinh (ngày, tháng, năm sinh) = bdate
- Ngày tính tuổi (vd hôm nay) = cdate
- d = Day(cdate) – Day(bdate)
- m = Month(cdate) – Month(bdate)
- y = Year(cdate) – Month(bdate)
- Nếu d < 0 (thiếu ngày để đủ tháng) =>
m = m -1
d = Số ngày từ ngày sinh đến cuối tháng + Số ngày từ đầu tháng hiện tại đến ngày tính
= Số ngày của tháng sinh – Ngày trong tháng của ngày sinh (Day(bdate)) + Ngày trong tháng của ngày tính
= Số ngày của tháng sinh + d - Nếu m < 0 (thiếu tháng để đủ năm) =>
y = y -1
m = 12 + m
Tính bằng Ms Excel:
Dùng hàm DATEDIF(start_date, end_date, unit):
- Số năm = DATEDIF(bdate;cdate;”y”)
- Số tháng =DATEDIF(bdate;cdate;”ym”)
- Số ngày = DATEDIF(bdate;cdate;”md”)
Tính bằng javascript:
function getDateDif(bdate, cdate) {
// Tính khoảng cách giữa cdate và bdate (cdate sau bdate, tức cdate > bdate)
// Trả về array: số năm, số tháng, số ngày
var y = cdate.getFullYear() - bdate.getFullYear();
var m = cdate.getMonth() - bdate.getMonth();
var d = cdate.getDate() - bdate.getDate();
if (d < 0) {
m--;
var t = new Date(bdate.getFullYear(), bdate.getMonth() + 1, 0);
d += t.getDate();
}
if (m < 0) {
m += 12;
y--;
}
return new Array(y, m, d);
}
Xem tuổi hưu tại đây: Tính tuổi nghỉ hưu (lvluat.net)