从日期定义的javascript开始重复

repeat starting from a date defined javascript

本文关键字:开始 javascript 日期 定义      更新时间:2023-09-26

我有一个脚本的问题,它应该增加一天的日期从定义的父数据。下面是代码

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;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul id="ul"></ul>

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

谢谢

主要问题是你已经做了

var data = new Date();

…也没有使用你的data_inizio。当你这样做时,它默认为当前日期。

相反,使用Date构造函数接受年、月、日(和可选的时间信息)。注意,当您这样做时,月份值从0开始,因此:

var data = new Date(2016, 4, 25); // 25/05/2016 because months start with zero

但是其余的代码在上的工作比必要的要困难得多,并且错误地实现了闰年算法。幸运的是,你根本不需要这样做,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;
}
<ul id="ul"></ul>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

从这里

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

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

从您的初始日期计算这些值,所有值都应该是正确的。