Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/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-从当前日期开始计算1年/3个月/1个月前的日期(dd-mm-yyyy)_Javascript_Jquery_Date - Fatal编程技术网

Javascript-从当前日期开始计算1年/3个月/1个月前的日期(dd-mm-yyyy)

Javascript-从当前日期开始计算1年/3个月/1个月前的日期(dd-mm-yyyy),javascript,jquery,date,Javascript,Jquery,Date,我有一个下拉框,包含3个选项。每月、每季度和每年。当选择其中一个选项时,我尝试填充2个字段。开始日期将是当前日期,我想根据所选选项计算结束日期。到目前为止,我有这个 HTML: <select name="date_range" class="date_range"> <option value="None">Please select a date range</option> <option value="Yearly">Yea

我有一个下拉框,包含3个选项。每月、每季度和每年。当选择其中一个选项时,我尝试填充2个字段。开始日期将是当前日期,我想根据所选选项计算结束日期。到目前为止,我有这个

HTML:

<select name="date_range" class="date_range">
    <option value="None">Please select a date range</option>
    <option value="Yearly">Yearly</option>
    <option value="Quarterly">Quarterly</option>
    <option value="Monthly">Monthly</option>
</select>

<p>Start Date</p>
    <input type="text" name="start_date" id="start_date" />
<p>End Date</p>
    <input type="text" name="end_date" id="end_date" />
console.log提供了以下信息:

Wed May 01 2013 19:42:42 GMT+0100 (GMT Daylight Time)
“开始日期”和“结束日期”字段都使用日期选择器,当前的格式为dd-mm-yyyy。如何计算从当前日期到正确格式的正确日期范围(月、季或年),并设置两个字段的值(使用“dd-mm-yyyy”格式)


我遇到过Moment.js和datejs,如果问题太复杂,我可能会考虑使用它们。提前为任何帮助干杯。

您是否尝试过
getFullYear()


我建议对HTML稍作修改,使用月数而不是字符串:

<select name="date_range" class="date_range">
    <option value="0">Please select a date range</option>
    <option value="12">Yearly</option>
    <option value="3">Quarterly</option>
    <option value="1">Monthly</option>
</select>

<p>Start Date</p>
    <input type="date" name="start_date" id="start_date" />
<p>End Date</p>
    <input type="date" name="end_date" id="end_date" />
这利用了函数:on the date对象

注意:我同意将该值更改为您希望将其更改为的月数是最好的解决方案,因为这将允许更动态的代码。另外,我的代码不处理无选择,因为我不知道您希望它做什么


HTML:

<select name="date_range" class="date_range">
    <option value="None">Please select a date range</option>
    <option value="Yearly">Yearly</option>
    <option value="Quarterly">Quarterly</option>
    <option value="Monthly">Monthly</option>
</select>

<p>Start Date</p>
    <input type="text" name="start_date" id="start_date" />
<p>End Date</p>
    <input type="text" name="end_date" id="end_date" />
$('.date_range').change(function(){
    var now = new Date();
    var start = new Date();
    switch($('.date_range').find(":selected").text())
    {
        case 'Yearly':
            start.setFullYear(start.getFullYear()-1);
            break;
        case 'Quarterly':
            start.setFullYear(start.getFullYear(), start.getMonth()-3);
            break;
        case 'Monthly':
            start.setFullYear(start.getFullYear(), start.getMonth()-1);
            break;
    }
     $('#start_date').val(start.toLocaleDateString());
     $('#end_date').val(now.toLocaleDateString());
});
<select name="date_range" class="date_range">
    <option value="0">Please select a date range</option>
    <option value="12">Yearly</option>
    <option value="3">Quarterly</option>
    <option value="1">Monthly</option>
</select>

<p>Start Date</p>
    <input type="text" name="start_date" id="start_date" />
<p>End Date</p>
    <input type="text" name="end_date" id="end_date" />
$('.date_range').change(function(){
    var now = new Date();
    var start = new Date();

    start.setFullYear(start.getFullYear(), start.getMonth()-$('.date_range').find(":selected").val());

     $('#start_date').val(start.toLocaleDateString());
     $('#end_date').val(now.toLocaleDateString());
});

如果您愿意更改HTML HTML:

<select name="date_range" class="date_range">
    <option value="None">Please select a date range</option>
    <option value="Yearly">Yearly</option>
    <option value="Quarterly">Quarterly</option>
    <option value="Monthly">Monthly</option>
</select>

<p>Start Date</p>
    <input type="text" name="start_date" id="start_date" />
<p>End Date</p>
    <input type="text" name="end_date" id="end_date" />
$('.date_range').change(function(){
    var now = new Date();
    var start = new Date();
    switch($('.date_range').find(":selected").text())
    {
        case 'Yearly':
            start.setFullYear(start.getFullYear()-1);
            break;
        case 'Quarterly':
            start.setFullYear(start.getFullYear(), start.getMonth()-3);
            break;
        case 'Monthly':
            start.setFullYear(start.getFullYear(), start.getMonth()-1);
            break;
    }
     $('#start_date').val(start.toLocaleDateString());
     $('#end_date').val(now.toLocaleDateString());
});
<select name="date_range" class="date_range">
    <option value="0">Please select a date range</option>
    <option value="12">Yearly</option>
    <option value="3">Quarterly</option>
    <option value="1">Monthly</option>
</select>

<p>Start Date</p>
    <input type="text" name="start_date" id="start_date" />
<p>End Date</p>
    <input type="text" name="end_date" id="end_date" />
$('.date_range').change(function(){
    var now = new Date();
    var start = new Date();

    start.setFullYear(start.getFullYear(), start.getMonth()-$('.date_range').find(":selected").val());

     $('#start_date').val(start.toLocaleDateString());
     $('#end_date').val(now.toLocaleDateString());
});

对于日期格式,请使用jquery.datepicker对象中的内置“format”方法:
$(“#开始日期”).datepicker.formatDate(“dd-mm-yyyy”,new-date())

moment.js非常适合进行日期解析,并且只有5kb的小数据。添加了js解决方案希望它能有所帮助。尽管当前日期是2月29日,您的结果日期显然不会是。他不是在做当前日期,只是一个静态日期。变量日期=新日期();是当前日期,我想他只是提供了概念证明,这里正确的选择是getFullYear来更改年份,但是我建议使用setFullYear函数。