[英]How to get the Day names and Number of days based on month and year
我想根据月份和年份获取周名称(星期日、星期一、星期二...)和天数...
daysInMonth(month, year) { return new Date(year, month, 0).getDate(); } let dys = this.daysInMonth(this.selected_from.getMonth() + 1, selected_year); for (let a = 1; a <= dys; a++) { console.log(a, 'a') } console.log(dys, 'dys');
通过使用此代码,我可以获得天数,但如何获取周名?
也许是这样的:
getDayNames(year: number, month: number) {
var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
var daysInMonth = new Date(year, month, 0).getDate();
for (let i = 1; i <= daysInMonth; i++) {
var d = new Date(year, month, i);
var dayName = days[d.getDay()];
console.log(i + ' ' + dayName);
}
}
由于飞蛾被声明为 0-11 而不是 1-12,我编辑了代码,因此您可以在 1 月输入 1,在 2 月输入 2 等等......
getDayNames(year: number, month: number) {
var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
var daysInMonth = new Date(year, month, 0).getDate();
for (let i = 1; i <= daysInMonth; i++) {
var d = new Date(year, month - 1, i);
var dayName = days[d.getDay()];
console.log(i + ' ' + dayName);
}
}
使用moment.js进行此类* 日期操作。
const getDayNames = (month, year) => { const daysInMonth = moment(`${month}-01-${year}`, 'MM-DD-YYYY').daysInMonth() const names = [] for (let i = 1; i <= daysInMonth; i++) { let date = moment(`${month}-${i}-${year}`, 'MM-DD-YYYY') let dayName = date.format('dddd') names.push(`${dayName} - ${date.format('MM-DD-YYYY')}`) } return names } console.log(getDayNames(5, 2018))
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.min.js"></script>
与往常一样,在这里我们可以为您提供非常通用的解决方案,而无需了解全局(上下文)。 这取决于你自己的体重 - 应该或不应该使用日期库。 如果您的应用程序依赖于复杂的日期操作 - 因此最好使用一个。
根据你的情况(不知道上下文),应该或不应该是有争议的。 这不是一个复杂的功能,但我个人更喜欢使用它,原因如下:
Date()
API 更简洁和命令式,这将降低出错的风险。当您有复杂的日期操作时,使用日期库总是一个不错的决定,而不是编写自己的函数,因为您必须自己管理和考虑很多复杂性(在给定的时间点) )。
例如:
小心,请不要重新发明轮子,尤其是对于复杂的日期操作! :)
学分:
function myFunction() {
var d = new Date();
var n = d.getDay();
var day = "";
switch(n) {
case 0:
day = "Sunday";
break;
case 1:
day = "Monday";
break;
case 2:
day = "Tuesday";
break;
case 3:
day = "Wednesday";
break;
case 4:
day = "Thursday";
break;
case 5:
day = "Friday";
break;
case 6:
day = "Saturday";
break;
default:
// do something
break;
}
document.getElementById("demo").innerHTML = day;
}
我编写了这个函数,它为一个月中的每一天创建一个矩对象列表。 可以优化线条,但为了清晰起见,请保持简单。
// function that gets all the days in a month with the corresponding arguments passed in
// Year, Month arguments are specified by the user, pass in the year in the month to find out the total amout of days in that month.
getDaysArrayByMonth(year,month){
// adding one to month because when you call moment.month() it returns 0-11 months instead of 1-12
const monthNum = month + 1;
// create moment object with formatted string
const year_month_string = monthNum.toString()+"-"+year.toString();
const FirstDayofMonth = moment(year_month_string,"MM-YYYY");
// find the number of days in the month from the moment object
var daysInMonth = FirstDayofMonth.daysInMonth();
// arr which will store all days in the month
var daysArr = [];
// create dayint variable to increment day of the month
var dayInt = 1;
// create string for creating moment object, will modify it in a loop to access all days of that month
var curDayofMonthString = "0"+dayInt.toString()+"-"+monthNum.toString()+"-"+year.toString();
// create moment obj with curDayofMonthString
var curDayofMonth = moment(curDayofMonthString,"DD-MM-YYYY");
// loop for total number of days in month to append all days to daysArr
while(daysInMonth){
// append day
daysArr.push(curDayofMonth);
// inc day and format string depending if day is doble digits or not
dayInt++;
if(dayInt > 9){
curDayofMonthString = dayInt.toString()+"-"+monthNum.toString()+"-"+year.toString();
}else{
curDayofMonthString = "0"+dayInt.toString()+"-"+monthNum.toString()+"-"+year.toString();
}
// create new moment obj
curDayofMonth = moment(curDayofMonthString,"DD-MM-YYYY");
daysInMonth--;
}
// return array with information on the month
return daysArr;
}
然后您可以访问这样的日子
Array.from(MomentObjDaysInMonthArray).forEach(obj =>{
console.log(obj.day());
});
其中: 0:星期日 1:星期一 2:星期二 3:星期三 4:星期四 5:星期五 6:星期六
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.