JavaScript:获取给定日期(月/年)的日名称数组

JavaScript:获取给定日期(月/年)的日名称数组,javascript,date,Javascript,Date,如何获得给定月份/年份的整月天数? 比如: 输出结果如下所示: Array ("1. Sunday", "2. Monday", "3. Tuesday", ... "29. Thursday", "30. Friday", "31. Saturday"); 致以最良好的祝愿, Chris具有实现逻辑所需的功能: 正如@natlee75所指出的,您可以从那里处理逻辑。试试这个 <!DOCTYPE html> <html> <body> <p

如何获得给定月份/年份的整月天数? 比如:

输出结果如下所示:

Array ("1. Sunday", "2. Monday", "3. Tuesday", ... "29. Thursday", "30. Friday", "31. Saturday");
致以最良好的祝愿, Chris具有实现逻辑所需的功能:

正如@natlee75所指出的,您可以从那里处理逻辑。

试试这个

<!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>

单击按钮显示一周中的今天

试试看 功能日每月(月、年){ 返回新日期(年、月、0)。getDate(); } 函数myFunction() {var b=[],工作日=['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],月=7,年=2000;
对于(var i=1,l=daysInMonth(month,year);我您可以使用标准的JavaScript日期对象轻松完成逻辑。下面是一个将一个日期推送到数组中的示例。只需在整个月内循环调用该方法。()


尝试此操作并在控制台中查看结果

<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>

var weekday=[‘星期日’、‘星期一’、‘星期二’、‘星期三’,
“星期四”、“星期五”、“星期六”];
风险值月份='7';
风险值年份='2012';
realmount=parseInt(月,10)-1;
var monthObj={};

对于(var i=1;i这应该满足您的要求

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;
}
函数getDaysArray(年、月){
变量numDaysInMonth、daysInWeek、daysIndex、index、i、l、daysArray;
numDaysInMonth=[31,28,31,30,31,30,31,30,31,30,31];
daysInWeek=[“周日”、“周一”、“周二”、“周三”、“周四”、“周五”、“周六”];
daysIndex={'Sun':0,'Mon':1,'Tue':2,'Wed':3,'Thu':4,'Fri':5,'Sat':6};
索引=daysIndex[(新日期(年,月-1,1)).toString().split(“”)[0]];
daysArray=[];
对于(i=0,l=numDaysInMonth[月份-1];i
我知道这是一个老问题,但今天a与此相关,我想指出,除了将
日(0-6)
转换为
字符串(周日-周六)

函数getDays(年、月){//month:1,以正常人为基础
--月//将其更改为基于0的日期对象
let dayname=[‘星期日’、‘星期一’、‘星期二’、‘星期三’、‘星期四’、‘星期五’、‘星期六’]
let date=新日期(年、月)
让结果=[]
while(date.getMonth()==月){
result.push(`${date.getDate()}.${dayname[date.getDay()]}`)
date.setDate(date.getDate()+1)
}
返回结果;
}

log(getDays(2019,12))
这与其说是一个“JavaScript”问题,不如说是一个“我想使用哪个日期的API”问题。一旦你找到了一个API,可以确定一周中的哪几天是在一年中的某个月,JavaScript部分就很简单了。你希望这个日期有什么输出。周六?划掉它……应该不太难……这么晚才想清楚:-)我认为应该有
month+1
不,month是基于零的。一月是零。这就是为什么我在该函数中交换它以与他的变量相对应。这就是为什么如果用户输入July(
7
),那么java脚本应该将其解释为
6
是的,这就是为什么我在getDisplay()中从月份中减去1。应该注意的是,在
myFunction()中
month
是以1为基础的,而不是以零为基础的;这是
daysInMonth
实现正常工作的唯一方法。这可能会导致混淆,因为javascript的
Date
对象使用以零为基础的月值否,month是以零为基础的。另请参见,在
工作日
数组中使用
new Array
西恩,你最好在工作日做
weekday=[“星期天”,“星期一”,“星期二”,“星期三”,“星期四”,“星期五”,“星期六]
。此外,无需在
for
循环的每次迭代中重新创建数组。@在
for
循环的每次迭代中随机调用
daysInMonth
效率非常低。类似于
for(var i=1,l=daysInMonth(month,year);i
更好,因为第二个“段”中的代码对于循环中的每个迭代,都会调用
for
循环的一部分。@Random-jackwanders对于
新数组
调用是正确的。奇怪的是,您在那里使用了它,因为您只在上面几行初始化了
b
正确的方法。从一开始就定义整个数组是最有效的方法,但即使是decla打一个空数组,然后把一周中的每一天都推进去会更有效率。如果你想让我添加评论来解释我在每一步中所做的事情,请告诉我,我会编辑这篇文章。非常感谢!这正是我要找的。再次感谢!h@natlee75假设我想分配“4个人的名字”在每个月的每一天,从人员数组中随机抽取,实现这一点的正确途径是什么?另一方面,从工人数组中创建一个automagic woks轮班整个月。感谢可能的答案
<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>
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;
}