从定义日期开始重复javascript

时间:2016-08-27 09:46:03

标签: javascript

我的脚本有问题,应该将日期从定义的日期增加一天。 这是代码



var data_inizio ="25/05/2016";
var turni = ["A", "B", "C", "D", "E"];
var n_g_mesi = ["31","28","31","30","31","30","31","31","30","31","30","31"];

//Costruiso la data nel formato preferito
    var data = new Date();
    var aaaa, mm, gg;
    gg = data.getDate();
    mm = data.getMonth()+1;
    aaaa = data.getFullYear();
	n_g_q_mese =  n_g_mesi[ data.getMonth()]; // numeri di giorni in un mese

var numero_turni = 7;
var n = turni.length;

for(var i=0;i<numero_turni;i++) {

        $('#ul').append('<li>'+ data_inizio+' '+ turni[i%n]+"<br />\n" +'</li>');

        var gg = gg%n_g_q_mese+1;



    if(gg==1){
        mm = mm%12+1;
        if(mm==3 && aa%4==0 && n_g_q_mese==28){ // se l'anno è bisestile
            mm = 2;
            gg = n_g_q_mese = 29;
        }else{
            n_g_q_mese = n_g_mesi[mm];
            if(mm==1)
                aa++;
        }
    }





        var data_inizio = gg+"/"+mm+"/"+aaaa;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul id="ul"></ul>
&#13;
&#13;
&#13;

脚本未检测到我的开始日期25/05/2016,但会考虑当前的日期。我哪里错了?你能帮我吗

谢谢

2 个答案:

答案 0 :(得分:1)

主要问题是你已经完成了

data_inizio

...并且不以任何方式使用您的Date。执行此操作时,默认为当前日期。

相反,请使用接受年,月,日(以及可选时间信息)的var data = new Date(2016, 4, 25); // 25/05/2016 because months start with zero 构造函数。请注意,当您这样做时,月份值从0开始,所以:

Date

但其余代码的工作很多比实际工​​作更难并且错误地实现了闰年算法。幸运的是,你根本不必这样做,data.setDate(data.getDate() + 1); 如果你把这一天增加一个,我很乐意为你做这件事:

var turni = ["A", "B", "C", "D", "E"];
var data = new Date(2016, 4, 25); // "25/05/2016"
var numero_turni = 7;
var n = turni.length;
for (var i = 0; i < numero_turni; i++) {
  $("#ul").append(
    "<li>" +
    formatDate(data) +
    ' '+ turni[i%n] +
    "<br />\n" +
    "</li>");
  data.setDate(data.getDate() + 1);
}

function formatDate(dt) {
  var g = String(dt.getDate());
  var m = String(dt.getMonth() + 1);
  var a = String(dt.getFullYear());
  if (g.length == 1) {
    g = "0" + g;
  }
  if (m.length == 1) {
    m = "0" + m;
  }
  return g + "/" + m + "/" + a;
}

它自动处理下个月(和年)的包装。

因此,如果我正确阅读其余代码:

&#13;
&#13;
<ul id="ul"></ul>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
<span>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

从这里

var data = new Date(); var aaaa, mm, gg; gg = data.getDate(); mm = data.getMonth()+1; aaaa = data.getFullYear();

您可以从当前日期获取日期,而根本不使用data_inizio。只是打印在第一个LI元素。

从初始日期开始计算这些值,所有值都可以。

希望这有帮助。