【问题标题】:How can I convert long to int in JavaScript?如何在 JavaScript 中将 long 转换为 int?
【发布时间】:2021-04-16 14:07:00
【问题描述】:

此 HTML 文件计算当前日期与所选日期之间的天数差,只要它晚于今天。
最终输出显示两个日期之间有多少天,但我无法将其从 long 转换为 int。
谁能解决这个问题?

这里是代码:

    <!DOCTYPE html>
    <html>
    <head>
    <title>Calcolo distanza</title>
    </head>
    <body onload="myFunction()">
    <p> Data corrente </p>
    <button type="button" id="myBtn"></button>
    <p> Scegli la data </p>
    <input type="date" id="dataCorrente">
    <input type="submit" onclick="calcola()">
    <br>
    <p id="Risultato"> </p>

    </body>
    <script>
        var d= new Date();
        function myFunction(){
            console.log("onload()");
            console.log(d);
            document.getElementById("myBtn").innerHTML=d.toDateString();
        }
        function calcola(){
            var input = document.getElementById("dataCorrente").value;
            if(input!=null){
                var dat=new Date();
                dat.setHours(0);
                dat.setMinutes(0);
                dat.setSeconds(0);
                var data = new Date(input); 
                var mill1=dat.getTime();
                var mill2=data.getTime();
                if(mill2>mill1){
                    mill2=mill2-mill1;
                    var ris=mill2/86400000;
                    document.getElementById("Risultato").innerHTML=ris;
                }
                else{
                    document.getElementById("Risultato").innerHTML="La data deve essere maggiore di quella corrente";
                }
            }
            else{
                console.log("input=null");
                document.getElementById("Risultato").innerHTML="Data non inserita";
            }
        }
    </script>
    </html>

【问题讨论】:

  • @Spectric 第 36 行 document.getElementById("Risultato").innerHTML=ris;这将输出显示为长值,但我必须将其转换为长数
  • 也许您想将数字四舍五入为整数? Math.round
  • JavaScript 中没有“长整数”这样的东西。所有数字都是双精度 64 位浮点值 (IEEE 754)。有一些表面支持将整数作为小数部分设置为 0 的数字。
  • @James 是的,但 Spectric 只是用 parseInt() 解决了它
  • parseInt 会去掉小数点,如果你想四舍五入的话,使用round。

标签: javascript html type-conversion integer long-integer


【解决方案1】:

像这样使用parseInt() 函数:

var d = new Date();

function myFunction() {
  /*console.log("onload()");
  console.log(d);*/
  document.getElementById("myBtn").innerHTML = d.toDateString();
}

function calcola() {
  var input = document.getElementById("dataCorrente").value;
  if (input != null) {
    var dat = new Date();
    dat.setHours(0);
    dat.setMinutes(0);
    dat.setSeconds(0);
    var data = new Date(input);
    var mill1 = dat.getTime();
    var mill2 = data.getTime();
    if (mill2 > mill1) {
      mill2 = mill2 - mill1;
      var ris = mill2 / 86400000;
      document.getElementById("Risultato").innerHTML = parseInt(ris);
    } else {
      document.getElementById("Risultato").innerHTML = "La data deve essere maggiore di quella corrente";
    }
  } else {
    console.log("input=null");
    document.getElementById("Risultato").innerHTML = "Data non inserita";
  }
}
<!DOCTYPE html>
<html>

<head>
  <title>Calcolo distanza</title>
</head>

<body onload="myFunction()">
  <p> Data corrente </p>
  <button type="button" id="myBtn"></button>
  <p> Scegli la data </p>
  <input type="date" id="dataCorrente">
  <input type="submit" onclick="calcola()">
  <br>
  <p id="Risultato"> </p>

</body>

</html>

【讨论】:

  • 这不会将任何内容从“long”转换为“int”,因为这些术语在 JavaScript 中是不相关的。
  • @HereticMonkey 是的,但我的意思是我需要显示 onlu 小数点前的数字,因为已经计算了天数
【解决方案2】:

我设置了data.setHours(0);,因为带有日期的时区导致了一些问题,它只是重置了小时。之后,它似乎工作了。

试试这个:

var d = new Date();

function myFunction() {
  document.getElementById("myBtn").innerHTML = d.toDateString();
}

function calcola() {
  var input = document.getElementById("dataCorrente").value;
  if (input != null) {
    var dat = new Date();
    dat.setHours(0);
    dat.setMinutes(0);
    dat.setSeconds(0);
    dat.setMilliseconds(0);
    var data = new Date(input);
    data.setHours(0);
    var mill1 = dat.getTime();
    var mill2 = data.getTime();
    if (data > dat) {
      mill2 = data - dat;
      console.log(data)
      console.log(dat)
      var ris = mill2 / 60 / 60 / 24 / 1000;
      document.getElementById("Risultato").innerHTML = ris;
    } else {
      document.getElementById("Risultato").innerHTML = "La data deve essere maggiore di quella corrente";
    }
  } else {
    console.log("input=null");
    document.getElementById("Risultato").innerHTML = "Data non inserita";
  }
}
<!DOCTYPE html>
<html>

<head>
  <title>Calcolo distanza</title>
</head>

<body onload="myFunction()">
  <p> Data corrente </p>
  <button type="button" id="myBtn"></button>
  <p> Scegli la data </p>
  <input type="date" id="dataCorrente">
  <input type="submit" onclick="calcola()">
  <br>
  <p id="Risultato"> </p>

</body>

</html>

【讨论】:

  • @Emdothermic_Dragon 是的,我没有考虑过这件事,非常感谢您的建议
猜你喜欢
  • 1970-01-01
  • 2010-11-21
  • 2011-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-17
  • 1970-01-01
相关资源
最近更新 更多