我有一个互动的故事,我需要根据这两个事实计算某人的出生年份:
到目前为止,我正在使用以下内容确定日期:
var currentDate = new Date()
var day = currentDate.getDate()
var month = currentDate.getMonth() + 1
var year = currentDate.getFullYear();
我可以用什么Javascript来确定出生年份需要保持上述事实才能保持正确?
我希望这是有道理的,并提前感谢您的帮助。
答案 0 :(得分:1)
var dateOfBirth;
if(month > 5 || (month === 5 && day > 20))
dateOfBirth = (year - 32) + '/05/20';
else
dateOfBirth = (year - 33) + '/05/20';
答案 1 :(得分:0)
1.这个角色是32岁 这个角色出生于5月20日。
javascript中的月份日期为零索引。我们的想法是根据年龄和今天的日期找出出生年份,然后设置月和日的值。
var ageInYears = 32;
var birthMonth = 'May';
var birthDay = '20th';
var d = new Date();
var currentMonth = d.getMonth();
var currentDate = d.getDate();
var months = {january:0, february:1, march:2, april:3, may:4, june:5, july:6,
august:7, september:8, october:9, november:10, december:12};
var birthMonthNum = months[birthMonth.toLowerCase()];
var birthDate = parseInt(birthDay);
var birthYear = d.getFullYear() - ageInYears - (currentMonth > birthMonthNum || currentMonth == birthMonthNum && currentDay > birthDate? 0 : 1);
// 20 May 1981
var fictionalBirthDate = new Date(birthYear, birthMonthNum, parseInt(birthDay));
请注意, parseInt 需要修剪日期的序数部分,因此'20th'
- > 20
。也可以使用正则表达式,但是parseInt更加自我记录。
似乎"现在"日期可以是您选择的任何日期,因此这是一个接受可选 ageDate 参数的函数,该参数是年龄为真的日期。如果没有提供日期,则使用当前日期。
// Calculate a birthdate given the age, birth month, birth date and ageDate on which
// the age is true. If no ageDate is provided, the current date is used.
function calcBirthYear(agetToTurn, birthMonth, birthDay, ageDate) {
date = ageDate || new Date();
var currentMonth = date.getMonth();
var currentDate = date.getDate();
var months = {january:0, february:1, march:2, april:3, may:4, june:5, july:6,
august:7, september:8, october:9, november:10, december:11};
var birthMonthNum = months[birthMonth.toLowerCase()];
var birthDate = parseInt(birthDay);
var birthYear = date.getFullYear() - agetToTurn - (currentMonth > birthMonthNum || currentMonth == birthMonthNum && currentDay >= birthDate? 0 : 1);
return new Date(birthYear, birthMonthNum, parseInt(birthDay));
}
console.log(calcBirthYear(10, 'May', '20th', new Date(2032, 1, 1))); // 20 May 2021
console.log(calcBirthYear(56, 'December', '4th')); // 4 Dec 1957
console.log(calcBirthYear(56, 'December', '4th', new Date(3014,2,17))); // 4 Dec 2957
console.log(calcBirthYear(57, 'June', '14th')); // 14 Jun 1956
该函数返回一个日期对象。如果只需要年份,则最后一行应为:
return birthYear;
答案 2 :(得分:0)
使用javascript Date
算术:
var date = new Date();
date.setDate(20);
date.setMonth(4); // May = 4(0 based month index)
date.setYear(date.Year-(date > new Date())?32+1:32);
现在date
有你角色的确切出生日期。
date.getYear();
将为您提供所需的年份。