【问题标题】:Customized message if birthday is in the past, today or future in Javascript如果生日是过去、今天或未来,则在 Javascript 中自定义消息
【发布时间】:2017-06-19 16:31:12
【问题描述】:

我对 Javascript 非常陌生,无法弄清楚以下内容:

1) 要求用户提交他们的完整生日(不仅仅是年份),然后计算他们的生日是今年已经过了,是今天还是今年即将到来。

2) 根据这三种可能的结果(例如/“您今年已经过生日”、“今天是您的生日”、“您的生日快到了”)获取要显示的自定义消息

我知道这一定很简单,但我已经用谷歌搜索了几天,但无法弄清楚。

到目前为止我所拥有的:

function getAge(birth){
  var today = new Date();
  var nowYear = today.getFullYear();
  var nowMonth = today.getMonth();
  var nowDay = today.getDate();
  
  var birthYear = birth.getFullYear();
  var birthMonth = birth.getMonth();
  var birthDay = birth.getDate();
  
  var age = nowYear - birthYear;
  var age_month = nowMonth - birthMonth;
  var age_day = nowDay - nowDay - birthDay;
  
  if (age_month < nowMonth || age_date < nowday) {
    age = parseInt(age) -1;
  }
  alert("your birthday just happened");
}

  

【问题讨论】:

  • 你有什么代码可以给我们看吗?或者它是一个规范? kk
  • 好的老板啊……
  • 将代码的相关部分 text 放入您的问题中。
  • 分而治之。搜索如何prompt 有问题的人。搜索如何比较日期。搜索 if/else 示例。等
  • 我不知道如何将代码粘贴到我的消息中,但是有一个链接“我的 javascript”可以打开一个窗口。我也会添加到目前为止的内容。

标签: javascript customization message


【解决方案1】:

VaguelyExotic 我认为这可以帮助你!

它提示用户输入他/她的出生日期。 将月份+日期与当前月份+日期进行比较,并相应地显示消息。

编辑 - 这是一个更简单的版本,可帮助您了解解决问题所需的步骤,它假设用户总是要正确输入日期并且没有异常处理。因此,请随时改进这一点。只供您开始自己的版本。

function getAge(){
  var today = new Date();
  var nowYear = today.getFullYear();
  var nowMonth = today.getMonth();
  var nowDay = today.getDate();
  
  var birth = prompt("When were you born?", "YYYY-MM-DD");
  var birth = new  Date(parseInt(birth.substring(0,4)),parseInt(birth.substring(5,7))-1,parseInt(birth.substring(8,10)));
  
  var birthYear = birth.getFullYear();
  var birthMonth = birth.getMonth();
  var birthDay = birth.getDate();
  
  var compBirth = birthMonth.toString() + birthDay.toString();
  var compToday = nowMonth.toString() + nowDay.toString();
  
  
  if( compBirth == compToday) {
    alert('Today is your birthday!');  
  } else if ( compBirth > compToday){
    alert('Your birthday is comming!');  
  } else {
    alert('Happy b-lated day!');  
  }
    
}
getAge();

【讨论】:

  • 非常感谢!代码工作得很好,我真的很喜欢它很干净,我可以理解其中的大部分内容——我会研究它以了解它是如何工作的,但它已经变得更有意义了。非常感谢。
  • 所以,请接受这个作为您的答案;),我将不胜感激。我很高兴能帮上忙
  • 不确定这是否仍然相关。但如果今天是 1 月而生日是 12 月,它将不起作用。它会说“你的生日快到了!”
  • 正确的检查方法是找到从今天到 dd-mm-lastYear 的天数和从今天到 dd-mm-nextYear 的天数的差异..并比较哪个更大..
猜你喜欢
  • 2019-10-08
  • 2023-04-01
  • 1970-01-01
  • 2018-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多