1

我有一个函数可以获取出生日期(只有日期和月份),并比较两个日期之间的 newsigndate 是否未定义。为什么?还有 AriesFrom 和 AriesTo。

该怎么办?

我想根据日期和月份比较出生日期,例如 21/3>21/2

是的

回归白羊座

谢谢

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>

function yourSign() {
  var signDate = $("input[name='birthDate']").val();
  tempsignDate = signDate.split("-").join("/");
  newsignDate = tempsignDate.substring(5, 10);

  var AriesDateFrom = "21/03";
  var AriesDateTo = "20/04";

  var Ad1 = AriesDateFrom.split("/");
  var Ad2 = AriesDateTo.split("/");

  var s = newsignDate.split("/");
  //var date = new Date().getDay() + "/" + new Date().getMonth() + 1 

  var AriesFrom = new Date(Ad1[1], Ad2[2]);


  newsignDate = new Date(s[1], s[2]);

  if (newsignDate == "") {
    alert("enter birthday");

  } else if (newsignDate >= AriesFrom && newsignDate < AriesTo) {
    $("#output").val("Aries");

  }
}

</script>
4

3 回答 3

0

这里有一个提示,可能有助于以不同的方式思考这个问题:

与其考虑一堆日期范围,不如考虑一个范围内最后日期的列表。现在您可以浏览该列表并找到第一个大于或等于您的日期的列表。(比较日期会更容易,因为它们是MMDD格式的)。

在实践中做到这一点的一种方法是使用find()数组的函数到find大于给定日期的第一个日期:

// list of signs and last cuttoff
let signs = [ [ 'Capricorn', '0119' ],
[ 'Aquarius', '0218' ],
[ 'Pisces', '0320' ],
[ 'Aries', '0420' ],
[ 'Taurus', '0521' ],
[ 'Gemini', '0621' ],
[ 'Cancer', '0722' ],
[ 'Leo', '0822' ],
[ 'Virgo', '0921' ],
[ 'Libra', '1022' ],
[ 'Scorpio', '1121' ],
[ 'Sagittarius', '1220' ],
[ 'Capricorn', '1231' ] ]


// Jan 1
console.log(signs.find(s => s[1] >= '0101'))
// March 10
console.log(signs.find(s => s[1] >= '0310'))
// Sept 29
console.log(signs.find(s => s[1] >= '0929'))
// Dec 31
console.log(signs.find(s => s[1] >= '1231'))

现在您只需要将输入转换为MMDD格式并从返回的数组中提取符号find()

于 2019-04-10T14:24:28.557 回答
0

谢谢!@bhavesh ajani 而不是警报我需要输出将在输出字段中。

<script>
function yoursign()
 if (s >= Ad1 && s < Ad2) {
output = "Aries";       

$("#output").val(output);

</script>
<body>

出生日期

        <button onclick="yourSign()" id="send">send</button><br />


        <label>yoursign: </label><br />

        <input type="text" name="output" id="output" />

于 2019-04-12T10:30:58.653 回答
0

在你的 else if 语句变量中替换为这些 js 文件代码。我认为你的要求是完整的,。谢谢你。

应用程序.js:

function yourSign() {

  var signDate = $("input[name='birthDate']").val();
  tempsignDate = signDate.split("-").join("/");
  newsignDate = tempsignDate.substring(5, 10);


  var AriesDateFrom = "03/21";
  var AriesDateTo = "04/20";

  var Ad1 = AriesDateFrom.split("/");
  var Ad2 = AriesDateTo.split("/");
  var s = newsignDate.split("/");

  if(newsignDate == "") {
    alert("enter birthday");

  } 
  else if(s >= Ad1 && s < Ad2) {
    //$("#output").val("Aries");
    alert("Aries");
  }
  else
  {
    alert("not between");
  }}

HTML 文件:

<form>
    <input type="date" name="birthDate">
    <input type="submit" name="submit" value="submit" onclick="yourSign();">
</form>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript" src="app.js"></script>
于 2019-04-10T15:25:36.150 回答