admin管理员组

文章数量:1401314

i'm programming a calendar and i need to know what the first day of each month is. Like, This month, hte first day was on a sunday. How would i go about to figure that out for all months of the year? Or any month for that matter.

Thanks in advance!

edit: the day can be returned as an integer.

i'm programming a calendar and i need to know what the first day of each month is. Like, This month, hte first day was on a sunday. How would i go about to figure that out for all months of the year? Or any month for that matter.

Thanks in advance!

edit: the day can be returned as an integer.

Share Improve this question edited Oct 16, 2017 at 11:15 Angus asked Oct 16, 2017 at 10:41 AngusAngus 4495 silver badges17 bronze badges 2
  • You can use new Date("2017-10-01").getDay() to get the day of any date. No? – Mohit Bhardwaj Commented Oct 16, 2017 at 10:44
  • how do i turn that into a function applicable to any month tho? that's my problem – Angus Commented Oct 16, 2017 at 10:46
Add a ment  | 

5 Answers 5

Reset to default 2

Where options for toLocaleString are supported, you can use it to get the day name in the browser default language:

function getDayName(date) {
  return date.toLocaleString(undefined, {weekday:'long'});
}

function getMonthName(date) {
  return date.toLocaleString(undefined, {month:'long'});
}

// Create a date
var d = new Date();
// Set to first of month
d.setDate(1);
// Create string
console.log(`The first of ${getMonthName(d)} was a ${getDayName(d)}.`);

Of course mixing English with some other language may not be appropriate…

You could create a method that returns the day name

function(year, month){
    var date = new Date(year, month, 1);
    var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
    return days[date.getDay()];
}

JavaScript already provides this out of the box be using getDay.

new Date().getDay()

This will return 0-6. Depends on what weekday it is.

If you need it as a readable string you may want to do something like this:

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

console.log(weekdays[new Date().getDay()]);

Knowing this you can go furter:

const year = new Date().getFullYear();
const weekdays = [
  'Sunday',
  'Monday',
  'Tuesday',
  'Wednesday',
  'Thursday',
  'Friday',
  'Saturday'
];

[0,1,2,3,4,5,6,7,8,9,10,11].forEach(x => {
  const weekday = new Date(year, x, 1).getDay();
  console.log(weekdays[weekday]);
});

See: MDN

I would highly remend using MomentJS library if you are not already using it. Using moment, you can get the day of 1st of any month using this single statement:

moment("2017-11-01").startOf('month').format("dddd")

If you cannot use moment for some reason, then you could just create a function that takes in month and year and returns back the day of 1st of that month. You need to use Date.prototype.getDay() for this, which returns a value from 0 to 6, where 0 means Sunday.

$("#get-day").on("click", function(e){
  var year = $("#year").val();
  var month = $("#month").val();
  alert( getDay(year, month) );
});//#get-day click()



function getDay(year, month){
  var days = ["Sun", "Mon", "Tues", "Wed", "Thurs", "Fri", "Sat"];
  var dayIndex = new Date(year + "-" + month + "-01").getDay();
  return days[ dayIndex ];
}
<script src="https://ajax.googleapis./ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="year" value="2017" />
<input type="text" id="month" value="10" />
<button id="get-day">Get Day on 1st</button>

The .getDay() method returns an integer, the day of the week for the specified date according to local time, where Sunday = 0 and Saturday = 6. Here's an example using this:

dateFunction = function(myDate){
  var days = 
["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]

  var dayInt = new Date(myDate).getDay()
  return days[dayInt]
}
var FirstDayOfOctober = dateFunction("2017-10-01");

本文标签: javascriptJS datesfirst day of the monthStack Overflow