Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript中从表单计算所用时间_Javascript_Html_Forms_Date_Elapsedtime - Fatal编程技术网

JavaScript中从表单计算所用时间

JavaScript中从表单计算所用时间,javascript,html,forms,date,elapsedtime,Javascript,Html,Forms,Date,Elapsedtime,我正在开发一个用户在一个月、一天和一年中输入的时间消耗计算器。根据他们的输入和当前日期,我想计算其间有多少天,然后显示经过了多少年、月和天。我首先制作了一个表单,其中有三个输入值“月”、“日”和“年”。然后我开始写剧本: function timeElapsed() { var timeMonth = document.getElementById("month"); var timeDay = document.getElementById("day");

我正在开发一个用户在一个月、一天和一年中输入的时间消耗计算器。根据他们的输入和当前日期,我想计算其间有多少天,然后显示经过了多少年、月和天。我首先制作了一个表单,其中有三个输入值“月”、“日”和“年”。然后我开始写剧本:

function timeElapsed() {
       var timeMonth = document.getElementById("month");
       var timeDay = document.getElementById("day");
       var timeYear = document.getElementById("year");
       var currentDate = new Date();
       var elapsed = 
       document.getElementById("timeElapsed").innerHTML = elapsed;
   }
       //Event Listener
       var submitButton= document.getElementById("sButton");
    if (submitButton.addEventListener) {
        submitButton.addEventListener("click", timeElapsed, false);
    } else if (submitButton.attachEvent) {
        submitButton.attachEvent("onclick", timeElapsed);
    }

很明显,正如你所说的,我停下来是因为我在接下来的路上遇到了困难。这是我在学校里的一个实验室,我只想知道怎么做。我的老师提到“请注意,您的程序必须包含将超过31天的值转换为月份,将超过12个月的值转换为年份的代码。”我实际上完全困惑,但理解他的意思。它只是实际理解如何真正做到这一点。这是一门网络课程,仅仅从课本上理解是非常困难的。我在网上查了一下,但没有找到任何对我的情况有用的东西。如果您能帮助我,非常感谢。

javascript
中,您可以获得当前日期作为

var currentDate = new Date();
var currentMonth = currentDate.getMonth() + 1; // as it starts from 0
var currentDay = currentDate.getDate();
var currentYear = currentDate.getFullYear();
从输入日期字段中获取值后,需要执行一些基本的数学运算,如

if(currentMonth < inputMonth) {
  monthBetween = inputMonth - currentMonth;
} else if(currentMonth > inputMonth) {
  monthBetween = currentMonth - inputMonth;
} else {
  monthBetween = 0;
}
if(当前月<输入月){
monthBetween=输入月份-当前月份;
}否则如果(当前月>输入月){
monthBetween=currentMonth—inputMonth;
}否则{
月间=0;
}

下面是一些示例代码,您可以随意使用并从中学习

这里有一个
示例
可用于计算日期差

函数get(ID){
返回文档.getElementById(ID);
}
函数calculateDiff(){
var FromYear=get('FromYear')。值;
var FromMonth=get('FromMonth')。值;
var FromDay=get('FromDay')。值;
var ToYear=get('ToYear')。值;
var ToMonth=get('ToMonth')。值;
var ToDay=获取(“今日”)。值;
var date1=新日期(FromYear、FromMonth、FromDay);/*从日期创建日期对象*/
var date2=新日期(ToYear、ToMonth、ToDay);/*创建日期对象到日期*/
var diff=新日期(date2.getTime()-date1.getTime());
get('ResultYear')。value=diff.getUTCFullYear()-1970;/*计算年份差异*/
get('ResultMonth')。value=diff.getutcmmonth();/*计算月差*/
get('ResultDay')。value=diff.getUTCDate()-1;/*计数日差*/
}
calculateDiff();
var calculate=get('calculate');
calculate.onclick=函数(){
calculateDiff();
}
表格输入{
宽度:60px;
}
钮扣{
宽度:80%;
利润率:10px自动;
}

YYYY
嗯
DD
从…起
到
算计
结果

您可以从创建新日期(年、月、日)开始创建日期,然后获得如下所示的差异:。请注意,您可能应该将currentDate的小时数归零,然后四舍五入到整天,以适应可能的夏令时问题(或使用所有UTC方法)。