简体   繁体   中英

JavaScript: get array of day names of given date (month/year)

how can i get the whole month in day namesof given month/year? like:

var year = "2000";
var month = "7"

... some code here that makes an array with names of days of the given month...

and the output looks something like:

Array ("1. Sunday", "2. Monday", "3. Tuesday", ... "29. Thursday", "30. Friday", "31. Saturday");

Best regards, Chris

This should do what you asked.

function getDaysArray(year, month) {
    var numDaysInMonth, daysInWeek, daysIndex, index, i, l, daysArray;

    numDaysInMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
    daysInWeek = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
    daysIndex = { 'Sun': 0, 'Mon': 1, 'Tue': 2, 'Wed': 3, 'Thu': 4, 'Fri': 5, 'Sat': 6 };
    index = daysIndex[(new Date(year, month - 1, 1)).toString().split(' ')[0]];
    daysArray = [];

    for (i = 0, l = numDaysInMonth[month - 1]; i < l; i++) {
        daysArray.push((i + 1) + '. ' + daysInWeek[index++]);
        if (index == 7) index = 0;
    }

    return daysArray;
}

Try this

<!DOCTYPE html>
<html>
<body>

<p id="demo">Click the button to display todays day of the week.</p>

<button onclick="myFunction()">Try it</button>

<script type="text/javascript">
function daysInMonth(month,year) {
    return new Date(year, month, 0).getDate();
}

function myFunction()
{var b=[],weekday = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],month=7,year=2000;
for(var i=1,l=daysInMonth(month,year);i<l;i++){
var d = new Date(year,month-1,i);
b.push(i+"."+weekday[d.getDay()]);
}
console.log(b);}//b is the desired array
</script>

</body>
</html>

DateJS has the functions you need to implement the logic:

As @natlee75 noted, you can handle the logic from there.

You can do the logic yourself pretty easily using the standard JavaScript Date object. Here's an example of getting one date to push into your array. Just loop through the entire month calling the method. ( jsFiddle )

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

function getDisplay(month, day, year) {
    var d = new Date(year, month-1, day);
    return day + '. ' + daysOfTheWeek[d.getDay()];
}

array_push($dates, getDisplay(7, 4, 2012));

Try this and see the result in console.

<script>
var weekday = ['Sunday', 'Monday', 'Tuesday', 'Wednesday',
               'Thursday', 'Friday', 'Saturday'];
var month = '7';
var year = '2012';
realMonth = parseInt(month,10)-1;
var monthObj = {};
for(var i=1;i<30;i++)
{
    var d = new Date(year,realMonth,i);              
    monthObj[i] = weekday[d.getDay()];
}
console.log(monthObj);
</script>

I know this is an old question, but today a question linked to this, and I'd like to point out one don't really need to do much things other than convert day (0-6) to string (Sunday-Saturday)

 function getDays(year, month) { //month: 1-based, as normal person --month //change it to 0-based, as Date object let dayname = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'] let date = new Date(year, month) let result = [] while(date.getMonth()==month){ result.push(`${date.getDate()}. ${dayname[date.getDay()]}`) date.setDate(date.getDate()+1) } return result; } console.log(getDays(2019,12))

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM