如何在Javascript中将日期向前滚动到指定的日期?
我正在处理一个表单,它需要自动计算表单以('MMDDYYYY')格式提交的日期,然后单击两个链接中的一个链接a链接,计算下个月最接近的第一天和下个月最接近的第十五天 我已经创建了一个脚本,它将日期拉入并以我需要的格式输出到一个变量,但是我需要帮助来计算前滚 下面是一个我认为我需要的逻辑示例: 如果当前日期为0409013,则按下标有“每月1日”的按钮,将计算变量值05012013 如果当前日期为0409013,则在标有“每月15日”的按钮上,将计算变量值04152013如何在Javascript中将日期向前滚动到指定的日期?,javascript,jquery,date,date-arithmetic,Javascript,Jquery,Date,Date Arithmetic,我正在处理一个表单,它需要自动计算表单以('MMDDYYYY')格式提交的日期,然后单击两个链接中的一个链接a链接,计算下个月最接近的第一天和下个月最接近的第十五天 我已经创建了一个脚本,它将日期拉入并以我需要的格式输出到一个变量,但是我需要帮助来计算前滚 下面是一个我认为我需要的逻辑示例: 如果当前日期为0409013,则按下标有“每月1日”的按钮,将计算变量值05012013 如果当前日期为0409013,则在标有“每月15日”的按钮上,将计算变量值04152013 如果当前日期为04162
如果当前日期为04162013或当前月底之前的任何日期,则在标有“每月15日”的按钮上,将计算05152013的变量值。查看日期对象,它应提供您需要的: 例如,对于前两个按钮,如下所示:
$(function() {
var date = new Date(2013, 10, 24);
$("#date").html(date.toString());
$("#date1").html((new Date(date.getYear(), date.getMonth()+1, 1)).toString());
$("#date2").html((new Date(date.getYear(), date.getMonth()+1, 15)).toString());
});
(尽管我相信如果你仔细查看日期文档,会有更简单的方法做到这一点)下面是一个例子。如果您希望将其作为字符串返回,则必须根据需要在末尾对其进行格式化(使用UTC) 如果您输入的日期与您要求的日期编号相同,则返回的日期相同,而不是向前移动一个月
var date_string = '04092013';
// MMDDYYYY
function nextNthOfMonth(date_string, n) {
var date;
// n to Int, default 1
n = (+n || 1);
// date_string to ISO 8601
date_string = // "yyyy-MM-ddTHH:mm:ssZ"
date_string.slice(4)
+ '-' + date_string.slice(0, 2)
+ '-' + date_string.slice(2, 4)
+ 'T00:00:00Z';
// construct date object
date = new Date(date_string);
// fix to desired date
if (n < date.getUTCDate()) { // adjust for month if req.
date.setUTCMonth(date.getUTCMonth() + 1);
}
date.setUTCDate(n);
return date; // or format as desired
}
nextNthOfMonth(date_string, 1);
// Wed May 01 2013 01:00:00 GMT+0100 (GMT Daylight Time)
nextNthOfMonth(date_string, 15);
// Mon Apr 15 2013 01:00:00 GMT+0100 (GMT Daylight Time)
var-date_字符串='0409013';
//MMDDYYYY
函数nextNthOfMonth(日期\字符串,n){
风险值日期;
//n到Int,默认值为1
n=(+n | | 1);
//符合ISO 8601的日期字符串
日期字符串=/“yyyy-MM-ddTHH:MM:ssZ”
日期字符串切片(4)
+'-'+date_string.slice(0,2)
+'-'+date_string.slice(2,4)
+‘T00:00:00Z’;
//构造日期对象
日期=新日期(日期字符串);
//定到预定日期
if(n
试试看
演示:既然您知道日期的格式,请将输入分成几个部分:
var dateStr = '04092013'
var month = dateStr.substr(0,2);
var day = dateStr.substr(2,2);
var year = dateStr.substr(4,4);
根据要设置的规则构造新的日期基:
var newDate;
switch(rule)
{
case 'rule1':
newDate = new Date(year, month, 1);//first month is 0
break;
case 'rule2':
newDate = new Date(year, month, 15);//first month is 0
break;
}
- 记得检查一天是否大于15天
var newDate;
switch(rule)
{
case 'rule1':
newDate = new Date(year, month, 1);//first month is 0
break;
case 'rule2':
newDate = new Date(year, month, 15);//first month is 0
break;
}