2017-04-27 3 views
2

Financial YearComment obtenir financière, 1er et dernier jour de chaque mois de l'année entière

Je veux exercice en utilisant Jquery, Vérifiez l'exemple que j'ai 12 champs et chaque champ a un nom de mois et Dans la même rangée, il montre également la première et dernière date du mois, certains comment je suis arrivé au point mais incapable d'obtenir de tels résultats.

var theMonths = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; 
 

 
for (i = 0; i < 12; i++) { 
 
    var date = new Date(); 
 
    var firstDay = new Date(date.getFullYear(), date.getMonth(theMonths[i]), 1); 
 
    var lastDay = new Date(date.getFullYear(), date.getMonth() + 1, 0); 
 
    var months = '<li class="' + theMonths[i] + '">' + theMonths[i] + ' - - - - - - ' + firstDay + '---------' + lastDay + '</li>'; 
 
    $('.calenderYear .month').append(months); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="calenderYear"> 
 
    <ul class="month"></ul> 
 
    <span class="dates"></span> 
 
</div>

Répondre

0

La question est parce que vous fournissez une valeur de texte de votre tableau au paramètre month du constructeur de l'objet Date. Cette valeur doit être un nombre entier. Par conséquent votre tableau est redondant, vous pouvez simplement passer respectivement i et i + 1.

Notez également que votre production commence en juillet avec l'exercice. Pour ce faire, vous pouvez ajouter un décalage à la variable itérative, et utiliser l'opérateur modulo pour vous assurer qu'il se termine aux mois de début de l'année suivante.

Enfin, le lastDay devrait techniquement être au 23:59:59, pas 00:00:00, sinon il y a une période de presque 24 heures qui n'est pas couverte.

Essayez ceci:

var theMonths = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; 
 
var offset = 6; 
 

 
for (i = 0; i < 12; i++) { 
 
    var date = new Date(); 
 
    var monthIndex = i + offset; 
 
    var firstDay = new Date(date.getFullYear(), monthIndex % theMonths.length, 1); 
 
    var lastDay = new Date(date.getFullYear(), monthIndex + 1 % theMonths.length, 0, 23, 59, 59); 
 
    var months = '<li class="' + theMonths[i] + '"><p>' + theMonths[monthIndex % theMonths.length] + '</p><p>' + firstDay + '</p><p>' + lastDay + '</p></li>'; 
 
    $('.calenderYear .month').append(months); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="calenderYear"> 
 
    <ul class="month"></ul> 
 
    <span class="dates"></span> 
 
</div>

+0

Merci mon pote vous avez sauvé ma vie :) –

+0

Une chose plus, pouvez-vous s'il vous plaît laissez-moi savoir comment obtenir ce auromatically et comment puis-je la date de format seulement, comme il montre l'heure standard etc. et aussi si j'ai un champ de texte où je donne seulement mois (any) il commence à partir de ce mois –

+0

Date de mise en page est une douleur dans JS. Je vous suggère d'utiliser une bibliothèque comme Date.js ou Moment.js. Vous pouvez le faire manuellement si: http://stackoverflow.com/questions/3552461/how-to-format-a-javascript-date –