我有一个脚本的问题,它应该增加一天的日期从定义的父数据。下面是代码
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元素。
从您的初始日期计算这些值,所有值都应该是正确的。