2017-10-16 12 views
0

私のプログラムでは、私は誕生年、次の年、年、時、分、秒を計算しています。今、私は生年月日からどれだけ長く生きているのかを計算したいと思います。そのために私は計算の下に行ったが、何日、何時間、何分もの秒が生きていたための計算は間違っている。誰も助けることができますか? Javascript:生年から今日までの日、時間、分、秒の計算

var monthNames = ["January", "February", "March", "April", "May", "June", 
 
    "July", "August", "September", "October", "November", "December" 
 
]; 
 

 
var days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]; 
 

 
var today = new Date(); 
 

 
var myMonth = prompt("What month were you born in?"); 
 
var myDay = prompt("What day were you born on?"); 
 
var myYear = prompt("What year were you born in?"); 
 

 
var birthday = new Date(myYear, myMonth, myDay); 
 

 
var dateLoc = document.getElementById("dateField").innerHTML = "Today is " + today; 
 

 
var birthField = document.getElementById("birthField") 
 
    .innerHTML = "I was born on " + monthNames[myMonth - 1] + ' ' + myDay + ', ' + myYear + '.' + 
 
    '(' + myMonth + '/' + myDay + '/' + myYear + ')'; 
 

 
var milliseconds, seconds, minutes, hours, days; 
 

 
var years = today.getFullYear() - birthday.getFullYear(); 
 

 
myMonth--; 
 
var nextBirthday = (new Date(today.getFullYear(), myMonth, myDay)) < today ? (new Date(today.getFullYear() + 1, myMonth, myDay)) : (new Date(today.getFullYear(), myMonth, myDay)) 
 

 
console.log(nextBirthday); 
 

 
milliseconds = diff % 1000; 
 
diff = (diff - (milliseconds))/1000; 
 

 
seconds = diff % 60 
 

 
diff = (diff - seconds)/60; 
 

 
minutes = diff % 60 
 
diff = (diff - minutes)/60; 
 

 
hours = diff % 24 
 
days = (diff - hours)/24; 
 

 
var nextBirth = document.getElementById("nextBirth").innerHTML = "I am " + years + " Years old, and will turn " + (years + 1) + " in:" + "<br>" + days + " days, " + hours + " hours, " + minutes + " minutes, " + seconds + " seconds"; 
 

 
milliseconds = diffAlive % 1000; 
 
diffAlive = (diffAlive - (milliseconds))/1000; 
 

 
seconds = diffAlive % 60 
 

 
diffAlive = (diffAlive - seconds)/60; 
 

 
minutes = diffAlive % 60 
 
diffAlive = (diffAlive - minutes)/60; 
 

 
hours = diffAlive % 24 
 
days = (diffAlive - hours)/24; 
 

 

 
var aliveFor = document.getElementById("aliveFor").innerHTML = "I have been alive for..." + "<br>" + days + " days, " + hours + " hours, " + minutes + " minutes, " + seconds + " seconds";
p { 
 
    text-align: center; 
 
    font-family: monospace; 
 
    font-size: 20px; 
 
} 
 

 
body { 
 
    background-image: url(birth.jpg"); 
 
    background-repeat: no-repeat; 
 
    background-size: 1300px 600px; 
 
}
<p id="dateField"> </p> 
 
<p id="birthField"> </p> 
 
<p id="nextBirth"> </p> 
 
<p id="aliveFor"> </p>

出力:あなたはDateコンストラクタに間違った月に渡してい

enter image description here

+5

1歳の印象的なコード – charlietfl

答えて

1

birthdayを計算します。 0ベースです。

誕生日変数を設定する前に、myMonth--行を移動してください。

「10月は」誕生日の変数は11月だったプロンプトを介して入力された場合

myMonth--; 
var birthday = new Date(myYear, myMonth, myDay); 
0

あなたの「VaRの誕生日は、」例AHEAD月算出しました。ですから、以下のコードスニペットを変更してください。このことができます:)

<head> 
    <style> 
    p { 
     text-align: center; 
     font-family: monospace; 
     font-size: 20px; 
    } 

    body { 

     background-image: url("birth.jpg"); 
     background-repeat: no-repeat; 
     background-size: 1300px 600px; 
    } 
    </style> 
    <title>program</title> 
</head> 

<body> 
    <br> 
    <br> 
    <br> 
    <br> 
    <br> 
    <br> 
    <br> 
    <br> 
    <br> 
    <p id="dateField"> </p> 
    <p id="birthField"> </p> 
    <p id="nextBirth"> </p> 
    <p id="aliveFor"> </p> 
    <script> 
    var monthNames = ["January", "February", "March", "April", "May", "June", 
     "July", "August", "September", "October", "November", "December" 
    ]; 

    var days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]; 

    var today = new Date(); 

    var myMonth = prompt("What month were you born in?"); 
    var myDay = prompt("What day were you born on?"); 
    var myYear = prompt("What year were you born in?"); 



    // var birthday = new Date(myYear, myMonth, myDay); 

    // this change will make it work perfectly fine 
    var birthd = myYear + " " + myMonth + " " + myDay; 

    var birthday = new Date(birthd); 

    var dateLoc = document.getElementById("dateField").innerHTML = "Today is " + today; 

    var birthField = document.getElementById("birthField") 
     .innerHTML = "I was born on " + monthNames[myMonth - 1] + ' ' + myDay + ', ' + myYear + '.' + 
     '(' + myMonth + '/' + myDay + '/' + myYear + ')'; 

    var milliseconds, seconds, minutes, hours, days; 

    var years = today.getFullYear() - birthday.getFullYear(); 

    myMonth--; 
    var nextBirthday = (new Date(today.getFullYear(), myMonth, myDay)) < today ? (new Date(today.getFullYear() + 1, myMonth, myDay)) : (new Date(today.getFullYear(), myMonth, myDay)) 

    console.log(nextBirthday); 

    var diff = nextBirthday - today; 

    milliseconds = diff % 1000; 
    diff = (diff - (milliseconds))/1000; 

    seconds = diff % 60 

    diff = (diff - seconds)/60; 

    minutes = diff % 60 
    diff = (diff - minutes)/60; 

    hours = diff % 24 
    days = (diff - hours)/24; 

    var nextBirth = document.getElementById("nextBirth").innerHTML = "I am " + years + " Years old, and will turn " + (years + 1) + " in:" + "<br>" + days + " days, " + hours + " hours, " + minutes + " minutes, " + seconds + " seconds"; 


    var diffAlive = today - birthday; 

    milliseconds = diffAlive % 1000; 
    diffAlive = (diffAlive - (milliseconds))/1000; 

    seconds = diffAlive % 60 

    diffAlive = (diffAlive - seconds)/60; 

    minutes = diffAlive % 60 
    diffAlive = (diffAlive - minutes)/60; 

    hours = diffAlive % 24 
    days = (diffAlive - hours)/24; 


    var aliveFor = document.getElementById("aliveFor").innerHTML = "I have been alive for..." + "<br>" + days + " days, " + hours + " hours, " + minutes + " minutes, " + seconds + " seconds"; 
    </script> 
</body> 

</html> 
1

を時間差を計算ホープことは難しい作業ですので、あなたはより良いあなたがする必要があるこのライブラリを使用してタスクを解決するためにmoment.js

のように、いくつかのライブラリを使用する必要があります

// Make two dates 
var yearOfBirth = moment([2007, 0, 29]); 
var now = moment(); 

// Calculate the difference in seconds 
var difference = now.diff(yearOfBirth) 

// Make duration object 
var duration = moment.duration(difference); 

// Now you can format duration object as you want to, see the docs 
alert(duration.years()); 
+0

librなしで計算したいary。 – pari

関連する問題