0
votes

Comment transformer une période de date en tableau?

Comment transformer une période de date dans un tableau? Par exemple, j'ai une période allant du 1er mars 2020 au 29 avril 2020, comment puis-je le transformer en un tableau illustré ci-dessous?

    period = [{day: "Sun", date: "1", month: "Mar", year: "2020"}, ..., 
{day: "Wed",date: "29", month: "Apr", year: "2020"}]


1 commentaires

Bienvenue dans Stack Overflow! Pouvez-vous montrer quel code vous avez essayé d'accomplir cela?


4 Réponses :


2
votes

Vous pouvez créer une matrice à partir de la plage de dates Suivez https://stackoverflow.com/a/50398144/4964569

et obtenir le jour de la journée, suivez https://stackoverflow.com/a/4822882/4964569 p>

Et utilisez la fonction de la carte code> pour générer votre P>

var getDaysArray = function(s,e) {for(var a=[],d=new Date(s);d<=e;d.setDate(d.getDate()+1)){ a.push(new Date(d));}return a;};

var dateRange = getDaysArray(new Date('2020-03-10'), new Date('2020-04-29'));
var days = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'];

var result = dateRange.map(function(elem){
  
     var obj =  {
       day: days[elem.getDay()],
       date: elem.getDate(),
       month: elem.getMonth(),
       year: elem.getFullYear()
      
     }
     
     return obj;
});

console.log(result)


0 commentaires

1
votes

De manière traditionnelle, vous pouvez le faire comme ceci

    var startDate = new Date('2020-03-10');
    var endDateDate = new Date('2020-03-12');
    var arr = [];

    var days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];

    while(startDate.getTime() !== endDateDate.getTime()) {
       startDate.setDate(startDate.getDate() + 1)
       arr.push({
          day: days[startDate.getDay()], 
          date: startDate.getDate(), 
          month: startDate.getMonth(), 
          year: startDate.getYear()
       })
    }

    console.log(arr);


0 commentaires

0
votes

var start = new Date('March 1, 2020');
var period = [];

for(var i=1; i<=60; i++){

  if( i == 32 )
    start = new Date('April 1, 2020');

  if( i <= 31 )
    start.setDate(i);  
  else
    start.setDate(i - 31);  

  var dateString = start.toDateString().split(' ');

  period.push({
    day: dateString[0], 
    date: dateString[2], 
    month: dateString[1], 
    year: dateString[3]
  });
  
}

console.log( JSON.stringify(period) );


0 commentaires

0
votes

Je suppose que vous avez deux dates comme délimiteurs de plage. Sinon, vous pouvez les créer de cette façon:

var startDate = new Date('1 March 2020')
var endDate = new Date('29 April 2020')

var days = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]
var months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]

var period = []

while (startDate <= endDate) {
  period.push({
    day: days[startDate.getDay()],
    date: startDate.getDate(),
    month: months[startDate.getMonth()],
    year: startDate.getFullYear()
  })
  startDate.setDate(startDate.getDate() + 1)
}

console.log(period)

Ensuite, vous devez augmenter la première date d'un jour jusqu'à ce que vous atteigniez la dernière date. Pour augmenter la première date d'un jour, vous pouvez faire ceci:

var period = []

while (startDate <= lastDate) {
  period.push({
    day: days[startDate.getDay()],
    date: startDate.getDate(),
    month: months[startDate.getMonth()],
    year: startDate.getYear()
  })
  startDate.setDate(startDate.getDate() + 1)
}

Vous pouvez obtenir le jour et le mois à partir d'une date avec date.getDay () code> et date.getMonth () , mais ces méthodes renverront des nombres. Pour obtenir les noms réels, vous pouvez faire ceci:

var days = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]
var months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]

var startDateDay = days[startDate.getDay()]
var startDateMonth = months[startDate.getMonth()]

Et puis, vous itérez:

startDate.setDate(startDate.getDate() + 1)

Et c'est tout. Voici un violon avec un exemple fonctionnel:

var startDate = new Date('1 March 2020')
var endDate = new Date('29 April 2020')


0 commentaires