2012-04-05 1 views
4

Ich möchte etwas wie das (ein 7-Tage-Kalender) drucken, aber mit der Möglichkeit, von jedem beliebigen Datum zu starten.Wie bekomme ich die nächsten sieben Tage von X und Format in JS

Monday, 1 January 2011 
Tuesday, 2 January 2011 
Wednesday, 3 January 2011 
Thursday, 4 January 2011 
Friday, 5 January 2011 
Saturday, 6 January 2011 
Sunday, 7 January 2011 

So zum Beispiel möchte ich die nächsten sieben Tage ab 22 Februar zeigen. Hab keine Ahnung wie man damit umgeht.

+1

[Was haben Sie versucht?] (Http://mattgemmell.com/2008/12/08/what -haben-du-versucht /) – j08691

Antwort

9

Dies scheint zu sein, was du bist Suche nach:

function GetDates(startDate, daysToAdd) { 
    var aryDates = []; 

    for (var i = 0; i <= daysToAdd; i++) { 
     var currentDate = new Date(); 
     currentDate.setDate(startDate.getDate() + i); 
     aryDates.push(DayAsString(currentDate.getDay()) + ", " + currentDate.getDate() + " " + MonthAsString(currentDate.getMonth()) + " " + currentDate.getFullYear()); 
    } 

    return aryDates; 
} 

function MonthAsString(monthIndex) { 
    var d = new Date(); 
    var month = new Array(); 
    month[0] = "January"; 
    month[1] = "February"; 
    month[2] = "March"; 
    month[3] = "April"; 
    month[4] = "May"; 
    month[5] = "June"; 
    month[6] = "July"; 
    month[7] = "August"; 
    month[8] = "September"; 
    month[9] = "October"; 
    month[10] = "November"; 
    month[11] = "December"; 

    return month[monthIndex]; 
} 

function DayAsString(dayIndex) { 
    var weekdays = new Array(7); 
    weekdays[0] = "Sunday"; 
    weekdays[1] = "Monday"; 
    weekdays[2] = "Tuesday"; 
    weekdays[3] = "Wednesday"; 
    weekdays[4] = "Thursday"; 
    weekdays[5] = "Friday"; 
    weekdays[6] = "Saturday"; 

    return weekdays[dayIndex]; 
} 

var startDate = new Date(); 
var aryDates = GetDates(startDate, 7); 
console.log(aryDates);​ 
​ 

Ergebnis (Stand heute):

["Thursday, 5 April 2012", 
"Friday, 6 April 2012", 
"Saturday, 7 April 2012", 
"Sunday, 8 April 2012", 
"Monday, 9 April 2012", 
"Tuesday, 10 April 2012", 
"Wednesday, 11 April 2012", 
"Thursday, 12 April 2012"] 

Hier a working fiddle.

+1

Vielen Dank sehr! Es ist viel einfacher, vom Arbeitsbeispiel zu lernen als die reine Theorie. –

1
var feb22 = new Date(2012, 1, 22); 
var feb23 = new Date(feb22.getTime() + 1000*60*60*24); 

... und so weiter

+0

-1, Nichts wieder verwendbar hier. Was, wenn er das Datum ändern möchte? Oder die Funktion wiederverwenden? Formatiert dieses Datum auch nicht wie gewünscht (oder überhaupt). –

+0

@JamesHill Ich werde nicht alles für jemanden tun, der keine Anstrengung zeigt, aber aus deiner Antwort sieht es so aus, als würdest du gern die Jobs anderer Leute machen :) Wenn das OP das Datum ändern will, zeigt das mein Beispiel Es ist sehr einfach, ein Date mit einem anderen zu vereinbaren, damit das OP selbst etwas lernen kann. Downvotes sind für falsche Antworten, mit meiner Antwort ist nichts falsch. –

+0

Ich verstehe und schätze, was Sie über jemanden sagen, der keine Anstrengung zeigt.Ich habe diese Frage beantwortet, weil ich es für interessant hielt. Da mit Ihrer Antwort nichts falsch ist, widerspreche ich respektvoll demzufolge dem Downvote. Seit wann sind Antworten, die Fragen nicht beantworten, akzeptabel auf SO? –

1

können Sie die Variable datestring auf alles, was Sie und in der Schleife möchten Sie einfach den Tag erhöhen. Dann werden Sie die Daten bekommen, aber ich denke in einem anderen Format.

var dateString = '22 Feb 2012'; 
var actualDate = new Date(dateString); 
var newDate; 

for(var i=1; i<=7; i++){ 
newDate = new Date(actualDate.getFullYear(), actualDate.getMonth(), actualDate.getDate()+i); 
} 
+1

-1, formatiert die Daten nicht wie gewünscht. –

+0

Normalerweise sollte er jede Dokumentation über das JS-Datumsobjekt lesen: http://www.w3schools.com/jsref/jsref_obj_date.asp –

+0

Oder sagen Sie, dass wir ihm eigentlich so viel Code wie möglich geben sollten, also stellen Sie ihn ihm zur Verfügung mit dem kompletten Kalender, den er will !? –

3

Ein Anfangsdatum:

var startingDay = new Date(year, month, day); 

Eine ganze Woche von startingDay:

var thisDay = new Date(); 
for(var i=0; i<7; i++) { 
    thisDay.setDate(startingDay.getDate() + i); 
    console.log(thisDay.format()); 
} 

Die Formatierungsfunktion:

Date.prototype.format = function(){ 
    var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];   
    var days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]; 
    return days[this.getDay()] 
      +", " 
      +this.getDate() 
      +" " 
      +months[this.getMonth()] 
      +" " 
      +this.getFullYear(); 
}; 
+0

-1, formatiert die Daten nicht wie gewünscht. –

+0

Ich war nur faul, aber ich habe es einfach hinzugefügt. – Alexander

0

Hier ist meine Lösung Moment.js

Nächste 7 Tage

let days = []; 
 
let daysRequired = 7 
 

 
for (let i = 1; i <= daysRequired; i++) { 
 
    days.push(moment().add(i, 'days').format('dddd, Do MMMM YYYY')) 
 
} 
 

 
console.log(days)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

Nur für den Fall verwenden, wenn Sie vorherige 7 Tage

let days = []; 
 
let daysRequired = 7 
 

 
for (let i = daysRequired; i >= 1; i--) { 
 
    days.push(moment().subtract(i, 'days').format('dddd, Do MMMM YYYY')) 
 
} 
 

 
console.log(days)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
brauchen

0

Wenn Sie ab heute nächsten 7 Werktage brauchen

const isWeekday = (date) => { 
 
\t return date.weekday()!==0 && date.weekday()!==6 
 
} 
 

 
const weekdays=[]; 
 
let numberOfDaysRequired = 7 
 
let addDaysBy = 1 
 
moment.locale('en') 
 
while(weekdays.length < numberOfDaysRequired) 
 
{ 
 
    const d = moment().add(addDaysBy, 'days') 
 
    if(isWeekday(d)) 
 
    { 
 
    \t weekdays.push(d.format('dddd, Do MMMM YYYY')) 
 
    \t 
 
    } 
 
    addDaysBy++; 
 
} 
 

 
console.log(weekdays)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

Verwandte Themen