如果年份大于 currentYear,是否可以替换文本?
is there away to replace a text if the year is greater than the currentYear.?
如果年份大于 currentYear
,我想将 "was on "
替换为 "will be "
。
let myDate = new Date();
const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' ];
const currentYear = myDate.getFullYear();
let tense = 'was on';
for(let year= 2020; year <= 2030; year++){
let d = new Date(year, 4, 27);
if(d.getDate() === 27 && d.getMonth() === 4 ){
const output = `my birthday in ${year} ${tense} ${days[d.getDay()]}`;
console.log(output)
}
}
但是当我包含 if
语句时,它没有返回任何内容 - 没有错误,没有结果。
给你:)
let myDate = new Date();
const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' ];
const currentYear = myDate.getFullYear();
let tense = 'was on';
for(let year= 2010; year <= 2030; year++){
if (parseInt(currentYear) < parseInt(year)) {tense = 'will be on';}
let d = new Date(year, 4, 27);
if(d.getDate() === 27 && d.getMonth() === 4 ){
const output = `my birthday in ${year} ${tense} ${days[d.getDay()]}`;
console.log(output)
}
}
这可以使用 javascript 中的三元运算符。
const ripe = true;
const egg = ripe===true? "GOOD" :"BAD";
在此处阅读更多内容 (https://www.javascripttutorial.net/javascript-ternary-operator/)
let myDate = new Date();
const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' ];
const currentYear = myDate.getFullYear();
let tense1 = 'was on';
let tense2 = "will be"
for(let year= 2020; year <= 2030; year++){
let d = new Date(year, 4, 27);
if(d.getDate() === 27 && d.getMonth() === 4 ){
// If year>currentYear then(?) tense1 else(:) tense2
const preTense = parseInt(year)>parseInt(currentYear)? tense1 : tense2;
const output = `my birthday in ${year} ${preTense} ${days[d.getDay()]}`;
console.log(output)
}
}
let myDate = new Date();
const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' ];
const currentYear = myDate.getFullYear();
let tense = 'was on';
for(let year= 2020; year <= 2030; year++){
let d = new Date(year, 4, 27);
if(d.getDate() === 27 && d.getMonth() === 4 ){
if(year < currentYear){
const output = `my birthday in ${year} ${tense} ${days[d.getDay()]}`;
console.log(output)
}else{
let tense = 'will be';
const output = `my birthday in ${year} ${tense} ${days[d.getDay()]}`;
console.log(output)
}
}
}
试试这个:
const days = [
'Sunday',
'Monday',
'Tuesday',
'Wednesday',
'Thursday',
'Friday',
'Saturday'
];
const now = new Date();
const currentYear = now.getFullYear();
for(let year= 2020; year <= 2030; year++){
const d = new Date(year, 4, 27);
const tense = year > currentYear ? 'will be'
: year === currentYear ? 'is'
: 'was';
const dayOfWeek = days[d.getDay()];
if(d.getDate() === 27 && d.getMonth() === 4 ){
const output = `my birthday in ${year} ${tense} on ${dayOfWeek}`;
console.log(output)
}
}
理想情况下,您应该尽可能使用 const
。这也是使用三元运算符而不是 if/else-statement.
的绝好机会
您还可以通过先确定三个值之间的时态——past
、present
和 future
,然后使用这些值来获得desired
输出语句的不同部分所需的实际时态值。然后,不用在末尾使用 if/else,您可以只使用一个 console.log
语句,让不同的情况由时态处理。
我的示例将时态分为两组,一组用于当天,另一组用于我添加的附加年龄声明。为了这个例子,我将生日设置为当前日期,因此您可以看到 present
时态的作用,其中输出行将显示为 My birthday in 2021 is today, on Friday, and I am 31 years old.
实际情况如下:
从出生年份迭代到 100 年后
const now = new Date(),
[currentYear, currentMonth, currentDate] = [now.getFullYear(), now.getMonth(), now.getDate()],
bday = new Date(1990, currentMonth, currentDate),
[bdayYear, bdayMonth, bdayDate] = [bday.getFullYear(), bday.getMonth(), bday.getDate()],
currentAge = currentYear - bdayYear - (
(bdayMonth < currentMonth ||
(bdayMonth === currentMonth && bdayDate <= currentDate)
) ? 0 : 1
),
days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
tenses = {
date: {
past: 'was on a',
present: 'is today,',
future: 'will be on a'
},
age: {
past: 'was',
present: 'am',
future: 'will be'
}
},
_bday = new Date(bday); // cloning bday to avoid mutating the original bday date
for (let year = bdayYear; year <= bdayYear + 100; year++) {
_bday.setFullYear(year);
const [ month, date, day ] = [ _bday.getMonth(), _bday.getDate(), days[_bday.getDay()] ],
previousBday = new Date(year - 1, month, date),
age = year - bdayYear,
dateTense =
year < currentYear ||
(year === currentYear &&
(month < currentMonth ||
(month === currentMonth && date < currentDate)
)
)
? 'past'
: year === currentYear && month === currentMonth && date === currentDate
? 'present'
: 'future',
dateTenseString = tenses.date[dateTense],
ageTense = age === currentAge ? 'present' : (dateTense === 'present' ? 'past' : dateTense),
ageTenseString = tenses.age[ageTense];
document.body.innerHTML += `<span class="${ageTense}">My birthday in <b>${year}</b> ${dateTenseString} <b>${day}</b>, and I ${ageTenseString} <b>${age} years old</b>.</span>`;
}
body {
display: flex;
flex-direction: column;
margin: 0;
font-family: Arial, sans-serif;
font-size: 14px;
}
span { padding: 5px 10px; }
span:first-of-type { padding-top: 10px; }
span:last-of-type { padding-bottom: 10px; }
span.past {
background-color: #f8bbd0;
color: #880e4f;
}
span.present {
background-color: #d1c4e9;
color: #311b92;
border-top: 1px solid #311b92;
border-bottom: 1px solid #311b92;
}
span.future {
background-color: #bbdefb;
color: #0d47a1;
}
b { font-size: 120%; }
此功能还会智能地将您的年龄与您计算出的当年年龄进行比较,因此如果您的生日已经过了今年,它仍然会使用 I am
时态而不是 I was
紧张。同样,如果你的生日在当年还没到,那么上一年的年龄用I am
时态,今年的年龄用I will be
.
您也可以将其构建为一个表单,如下所示:
作为交互形式
const inputDob = document.getElementById('dob'),
inputYear = document.getElementById('year'),
output = document.getElementById('output'),
now = new Date(),
[currentYear, currentMonth, currentDate] = [now.getFullYear(), now.getMonth(), now.getDate()],
days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
tenses = {
date: {
past: 'was on a',
present: 'is today,',
future: 'will be on a'
},
age: {
past: 'was',
present: 'am',
future: 'will be'
}
};
const calculateAge = () => {
const year = Number(inputYear.value),
bdayParts = inputDob.value.split('-').map((e,i) => Number(e) - (i === 1 ? 1 : 0)),
bday = new Date(...bdayParts),
[bdayYear, bdayMonth, bdayDate] = [bday.getFullYear(), bday.getMonth(), bday.getDate()],
currentAge = currentYear - bdayYear - (
(bdayMonth < currentMonth ||
(bdayMonth === currentMonth && bdayDate <= currentDate)
) ? 0 : 1
);
bday.setFullYear(year);
const [ month, date, day ] = [ bday.getMonth(), bday.getDate(), days[bday.getDay()] ],
previousBday = new Date(year - 1, month, date),
age = year - bdayYear,
dateTense =
year < currentYear ||
(year === currentYear &&
(month < currentMonth ||
(month === currentMonth && date < currentDate)
)
)
? 'past'
: year === currentYear && month === currentMonth && date === currentDate
? 'present'
: 'future',
dateTenseString = tenses.date[dateTense],
ageTense = age === currentAge ? 'present' : (dateTense === 'present' ? 'past' : dateTense),
ageTenseString = tenses.age[ageTense];
output.innerHTML = `<span class="${ageTense}">In <b>${year}</b>, my birthday ${dateTenseString} <b>${day}</b>, and I ${ageTenseString} <b>${age} years old</b>.</span>`;
};
calculateAge();
document.addEventListener('input', calculateAge);
body {
display: flex;
flex-direction: column;
gap: 10px;
font-family: Arial, sans-serif;
font-size: 14px;
}
span { margin-top: 0px; }
b { font-size: 120%; }
<label>My birthdate is <input id="dob" type="date" value="1990-01-01" placeholder="mm/dd/yyyy"></label>
<label>What was my birthday in the year <input id="year" type="number" value="2000"></label>
<span id="output"></span>
如果年份大于 currentYear
,我想将 "was on "
替换为 "will be "
。
let myDate = new Date();
const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' ];
const currentYear = myDate.getFullYear();
let tense = 'was on';
for(let year= 2020; year <= 2030; year++){
let d = new Date(year, 4, 27);
if(d.getDate() === 27 && d.getMonth() === 4 ){
const output = `my birthday in ${year} ${tense} ${days[d.getDay()]}`;
console.log(output)
}
}
但是当我包含 if
语句时,它没有返回任何内容 - 没有错误,没有结果。
给你:)
let myDate = new Date();
const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' ];
const currentYear = myDate.getFullYear();
let tense = 'was on';
for(let year= 2010; year <= 2030; year++){
if (parseInt(currentYear) < parseInt(year)) {tense = 'will be on';}
let d = new Date(year, 4, 27);
if(d.getDate() === 27 && d.getMonth() === 4 ){
const output = `my birthday in ${year} ${tense} ${days[d.getDay()]}`;
console.log(output)
}
}
这可以使用 javascript 中的三元运算符。
const ripe = true;
const egg = ripe===true? "GOOD" :"BAD";
在此处阅读更多内容 (https://www.javascripttutorial.net/javascript-ternary-operator/)
let myDate = new Date();
const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' ];
const currentYear = myDate.getFullYear();
let tense1 = 'was on';
let tense2 = "will be"
for(let year= 2020; year <= 2030; year++){
let d = new Date(year, 4, 27);
if(d.getDate() === 27 && d.getMonth() === 4 ){
// If year>currentYear then(?) tense1 else(:) tense2
const preTense = parseInt(year)>parseInt(currentYear)? tense1 : tense2;
const output = `my birthday in ${year} ${preTense} ${days[d.getDay()]}`;
console.log(output)
}
}
let myDate = new Date();
const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' ];
const currentYear = myDate.getFullYear();
let tense = 'was on';
for(let year= 2020; year <= 2030; year++){
let d = new Date(year, 4, 27);
if(d.getDate() === 27 && d.getMonth() === 4 ){
if(year < currentYear){
const output = `my birthday in ${year} ${tense} ${days[d.getDay()]}`;
console.log(output)
}else{
let tense = 'will be';
const output = `my birthday in ${year} ${tense} ${days[d.getDay()]}`;
console.log(output)
}
}
}
试试这个:
const days = [
'Sunday',
'Monday',
'Tuesday',
'Wednesday',
'Thursday',
'Friday',
'Saturday'
];
const now = new Date();
const currentYear = now.getFullYear();
for(let year= 2020; year <= 2030; year++){
const d = new Date(year, 4, 27);
const tense = year > currentYear ? 'will be'
: year === currentYear ? 'is'
: 'was';
const dayOfWeek = days[d.getDay()];
if(d.getDate() === 27 && d.getMonth() === 4 ){
const output = `my birthday in ${year} ${tense} on ${dayOfWeek}`;
console.log(output)
}
}
理想情况下,您应该尽可能使用 const
。这也是使用三元运算符而不是 if/else-statement.
您还可以通过先确定三个值之间的时态——past
、present
和 future
,然后使用这些值来获得desired
输出语句的不同部分所需的实际时态值。然后,不用在末尾使用 if/else,您可以只使用一个 console.log
语句,让不同的情况由时态处理。
我的示例将时态分为两组,一组用于当天,另一组用于我添加的附加年龄声明。为了这个例子,我将生日设置为当前日期,因此您可以看到 present
时态的作用,其中输出行将显示为 My birthday in 2021 is today, on Friday, and I am 31 years old.
实际情况如下:
从出生年份迭代到 100 年后
const now = new Date(),
[currentYear, currentMonth, currentDate] = [now.getFullYear(), now.getMonth(), now.getDate()],
bday = new Date(1990, currentMonth, currentDate),
[bdayYear, bdayMonth, bdayDate] = [bday.getFullYear(), bday.getMonth(), bday.getDate()],
currentAge = currentYear - bdayYear - (
(bdayMonth < currentMonth ||
(bdayMonth === currentMonth && bdayDate <= currentDate)
) ? 0 : 1
),
days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
tenses = {
date: {
past: 'was on a',
present: 'is today,',
future: 'will be on a'
},
age: {
past: 'was',
present: 'am',
future: 'will be'
}
},
_bday = new Date(bday); // cloning bday to avoid mutating the original bday date
for (let year = bdayYear; year <= bdayYear + 100; year++) {
_bday.setFullYear(year);
const [ month, date, day ] = [ _bday.getMonth(), _bday.getDate(), days[_bday.getDay()] ],
previousBday = new Date(year - 1, month, date),
age = year - bdayYear,
dateTense =
year < currentYear ||
(year === currentYear &&
(month < currentMonth ||
(month === currentMonth && date < currentDate)
)
)
? 'past'
: year === currentYear && month === currentMonth && date === currentDate
? 'present'
: 'future',
dateTenseString = tenses.date[dateTense],
ageTense = age === currentAge ? 'present' : (dateTense === 'present' ? 'past' : dateTense),
ageTenseString = tenses.age[ageTense];
document.body.innerHTML += `<span class="${ageTense}">My birthday in <b>${year}</b> ${dateTenseString} <b>${day}</b>, and I ${ageTenseString} <b>${age} years old</b>.</span>`;
}
body {
display: flex;
flex-direction: column;
margin: 0;
font-family: Arial, sans-serif;
font-size: 14px;
}
span { padding: 5px 10px; }
span:first-of-type { padding-top: 10px; }
span:last-of-type { padding-bottom: 10px; }
span.past {
background-color: #f8bbd0;
color: #880e4f;
}
span.present {
background-color: #d1c4e9;
color: #311b92;
border-top: 1px solid #311b92;
border-bottom: 1px solid #311b92;
}
span.future {
background-color: #bbdefb;
color: #0d47a1;
}
b { font-size: 120%; }
此功能还会智能地将您的年龄与您计算出的当年年龄进行比较,因此如果您的生日已经过了今年,它仍然会使用 I am
时态而不是 I was
紧张。同样,如果你的生日在当年还没到,那么上一年的年龄用I am
时态,今年的年龄用I will be
.
您也可以将其构建为一个表单,如下所示:
作为交互形式
const inputDob = document.getElementById('dob'),
inputYear = document.getElementById('year'),
output = document.getElementById('output'),
now = new Date(),
[currentYear, currentMonth, currentDate] = [now.getFullYear(), now.getMonth(), now.getDate()],
days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
tenses = {
date: {
past: 'was on a',
present: 'is today,',
future: 'will be on a'
},
age: {
past: 'was',
present: 'am',
future: 'will be'
}
};
const calculateAge = () => {
const year = Number(inputYear.value),
bdayParts = inputDob.value.split('-').map((e,i) => Number(e) - (i === 1 ? 1 : 0)),
bday = new Date(...bdayParts),
[bdayYear, bdayMonth, bdayDate] = [bday.getFullYear(), bday.getMonth(), bday.getDate()],
currentAge = currentYear - bdayYear - (
(bdayMonth < currentMonth ||
(bdayMonth === currentMonth && bdayDate <= currentDate)
) ? 0 : 1
);
bday.setFullYear(year);
const [ month, date, day ] = [ bday.getMonth(), bday.getDate(), days[bday.getDay()] ],
previousBday = new Date(year - 1, month, date),
age = year - bdayYear,
dateTense =
year < currentYear ||
(year === currentYear &&
(month < currentMonth ||
(month === currentMonth && date < currentDate)
)
)
? 'past'
: year === currentYear && month === currentMonth && date === currentDate
? 'present'
: 'future',
dateTenseString = tenses.date[dateTense],
ageTense = age === currentAge ? 'present' : (dateTense === 'present' ? 'past' : dateTense),
ageTenseString = tenses.age[ageTense];
output.innerHTML = `<span class="${ageTense}">In <b>${year}</b>, my birthday ${dateTenseString} <b>${day}</b>, and I ${ageTenseString} <b>${age} years old</b>.</span>`;
};
calculateAge();
document.addEventListener('input', calculateAge);
body {
display: flex;
flex-direction: column;
gap: 10px;
font-family: Arial, sans-serif;
font-size: 14px;
}
span { margin-top: 0px; }
b { font-size: 120%; }
<label>My birthdate is <input id="dob" type="date" value="1990-01-01" placeholder="mm/dd/yyyy"></label>
<label>What was my birthday in the year <input id="year" type="number" value="2000"></label>
<span id="output"></span>