Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.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 - Fatal编程技术网

如何使用javascript中选择的日期计算当前日期?

如何使用javascript中选择的日期计算当前日期?,javascript,Javascript,我试图根据选择语句计算出用户的年龄 我无法根据用户输入计算当前(年/月/日/小时/分钟) 其目的是用户将看到3个框来选择[出生月份][出生日期]和[出生年份] 根据答案,我想计算当前日期减去用户选择的日期 由于某种原因,我无法使逻辑工作。我可以硬编码,但我希望它是合乎逻辑的 这是我的密码: <!DOCTYPE> <html> <title>Validate Credit Cards</title> <head> <scri

我试图根据选择语句计算出用户的年龄

我无法根据用户输入计算当前(年/月/日/小时/分钟)

其目的是用户将看到3个框来选择[出生月份][出生日期]和[出生年份]

根据答案,我想计算当前日期减去用户选择的日期

由于某种原因,我无法使逻辑工作。我可以硬编码,但我希望它是合乎逻辑的

这是我的密码:

<!DOCTYPE>
<html>
<title>Validate Credit Cards</title>
<head>
    <script type="text/javascript">
    /* <![CDATA[ */
    /* ]]> */
    </script>
</head>
<body>
    <form action="">
            <h1>Age Calculator</h1>
            <p>Birth Date:
                <select name="month">
                    <option>Month</option>
                    <option>1</option>
                    <option>2</option>
                    <option>3</option>
                    <option>4</option>
                    <option>5</option>
                    <option>6</option>
                    <option>7</option>
                    <option>8</option>
                    <option>9</option>
                    <option>10</option>
                    <option>11</option>
                    <option>12</option>
                </select>
                <select name="day">
                    <option>Day</option>
                    <option>1</option>
                    <option>2</option>
                    <option>3</option>
                    <option>4</option>
                    <option>5</option>
                    <option>6</option>
                    <option>7</option>
                    <option>8</option>
                    <option>9</option>
                    <option>10</option>
                    <option>11</option>
                    <option>12</option>
                    <option>13</option>
                    <option>14</option>
                    <option>15</option>
                    <option>16</option>
                    <option>17</option>
                    <option>18</option>
                    <option>19</option>
                        <option>20</option>
                    <option>21</option>
                    <option>22</option>
                    <option>23</option>
                    <option>24</option>
                    <option>25</option>
                    <option>26</option>
                <option>27</option>
                <option>28</option>
                <option>29</option>
                <option>30</option>
                <option>31</option>
            </select>
            <select name="year">
                <option>Year</option>
                <option>1950</option>
                <option>1951</option>
                <option>1952</option>
                <option>1953</option>
                <option>1954</option>
                <option>1955</option>
                <option>1956</option>
                <option>1957</option>
                <option>1958</option>
                <option>1959</option>
                <option>1960</option>
                <option>1961</option>
                <option>1962</option>
                <option>1963</option>
                <option>1964</option>
                <option>1965</option>
                <option>1966</option>
                <option>1967</option>
                <option>1968</option>
                <option>1969</option>
                <option>1970</option>
                <option>1971</option>
                <option>1972</option>
                <option>1973</option>
                <option>1974</option>
                <option>1975</option>
                <option>1976</option>
                <option>1977</option>
                <option>1978</option>
                <option>1979</option>
                <option>1980</option>
                <option>1981</option>
                <option>1982</option>
                <option>1983</option>
                <option>1984</option>
                <option>1985</option>
                <option>1986</option>
                <option>1987</option>
                <option>1988</option>
                <option>1989</option>
                <option>1990</option>
                <option>1991</option>
                <option>1992</option>
                <option>1993</option>
                <option>1994</option>
                <option>1995</option>
                <option>1996</option>
                <option>1997</option>
                <option>1998</option>
                <option>1999</option>
                <option>2000</option>
                <option>2001</option>
                <option>2002</option>
                <option>2003</option>
                <option>2004</option>
                <option>2005</option>
                <option>2006</option>
                <option>2007</option>
                <option>2008</option>
                <option>2009</option>
                <option>2010</option>
            </select>               
        </p>
        <p><input type="button" value="Calculate" onclick="calcAge()" /></p>
        <h2>You have lived</h2>
        <p><input type="text" name="yearCalc" size="7" /> years</p>
        <p><input type="text" name="monthCalc" size="7" /> months</p>
        <p><input type="text" name="dayCalc" size="7" /> days</p>
        <p><input type="text" name="hourCalc" size="7" /> hours</p>
        <p><input type="text" name="minCalc" size="7" /> minutes</p>
    </form> 
<script>    
    function calcAge()
        {
        var d1 = new Date();
        var month = document.forms[0].month.value;
        var day = document.forms[0].day.value;
        var year = document.forms[0].year.value;
        var yearCalc = 2012 - year;
        var monthCalc = parseInt(month);
        var dayCalc = Math.abs(d1 - parseInt(day));
        var hourCalc = Math.round();
        var minCalc = Math.round();
        document.forms[0].yearCalc.value =  yearCalc.toLocaleString();
        document.forms[0].monthCalc.value =  monthCalc.toLocaleString();
        document.forms[0].dayCalc.value =  dayCalc.toLocaleString();
        document.forms[0].hourCalc.value =  hourCalc.toLocaleString();
        document.forms[0].minCalc.value =  minCalc.toLocaleString();
        }
</script>

验证信用卡
/*  */
年龄计算器
出生日期:
月
1.
2.
3.
4.
5.
6.
7.
8.
9
10
11
12
白天
1.
2.
3.
4.
5.
6.
7.
8.
9
10
11
12
13
14
15
16
十七,
18
19
20
21
22
23
24
25
26
27
28
29
30
31
年
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010

你曾经生活过 年头

月份

日子

小时数

会议记录

函数calage() { var d1=新日期(); var month=document.forms[0].month.value; var day=document.forms[0].day.value; var year=document.forms[0].year.value; var yearCalc=2012年-年; var monthCalc=parseInt(月); var dayCalc=Math.abs(d1-parseInt(day)); var hourCalc=Math.round(); var minCalc=Math.round(); document.forms[0].yearCalc.value=yearCalc.toLocalString(); document.forms[0].monthCalc.value=monthCalc.toLocaleString(); document.forms[0].dayCalc.value=dayCalc.toLocalString(); document.forms[0].hourCalc.value=hourCalc.ToLocalString(); document.forms[0].minCalc.value=minCalc.toLocaleString(); }

日期对象()有一些很好的预先打包的函数,尤其是getTime()函数,它返回日期对象自1970年以来以毫秒为单位的时间,除了单位(Unix时间为秒)外,基本上与Unix时间相同。要确定年龄,我们需要做的就是将用户的选择存储为日期对象,然后计算现在和用户输入的任何内容之间的差异

var d1 = new Date();
d1.setMonth(document.forms[0].month.value);
d1.setDay(document.forms[0].day.value);
d1.setYear(document.forms[0].year.value);
var now = new Date();
var ageInMs = now.getTime() - d1.getTime();
var ageInYears = ageInMs / 86400000 / 365;
由于getTime()函数返回毫秒,我们需要将其转换为年。一天有86400000毫秒,一年有365天(大约)

编辑: 如果组合框的值实际上是字符串,则可能需要对其使用parseInt()。这将是一个简单的改变,而不是

d1.setMonth(document.forms[0].month.value);
你会的

d1.setMonth(parseInt(document.forms[0].month.value, 10));

为什么不使用两个日期对象进行计算?您可以使用date对象的函数将其转换为秒,并轻松计算。您可能需要在每个select选项上设置value属性Great answer jropella。我要强调在使用parseInt函数时始终指定基数或基数的重要性。否则,您可能会得到意外的结果:当处理来自表单的日期和时间时,尤其如此,在该表单中解析的日期值可能有前导零。如果无法指定基数10,则parseInt()将假定基数为8。@Codasaurus不知道这一点!抢手货酌情更新