2012-07-04 98 views
5

如何获得给定月份/年的日期名称中的整个月份? 像:JavaScript:获取给定日期(月/年)的日期名称数组

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

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

和输出看起来像:

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

最好的问候, 克里斯

+0

这不是一个“JavaScript”问题,因为它是“哪个日期API我想使用”的问题。一旦你找到一个API来确定哪一天的某一天在特定年份的特定月份下跌,那么JavaScript部分很容易。 – natlee75

+0

你期待这个日期的输出是什么。星期六? – 2012-07-04 04:15:11

+0

Scratch that ...应该不会太难...这么迟才想清楚:-) – natlee75

回答

9

这应该做你所问。

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; 
} 
+0

如果你想让我添加评论来解释我在每一步所做的事情,只需告诉我,我将编辑帖子。 – natlee75

+0

非常感谢!这正是我所期待的。再次感谢! – Chris

2

试试这个

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

应该注意的是,在你的'myFunction()'中,'month'是基于1的,而不是零 - 根据;这是你的'daysInMonth'实现的唯一方法。这可能会导致混淆,因为javascript的Date对象使用基于零的月份值。 – jackwanders

+0

不,月份为零。请参阅https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/ – scottheckel

+0

另外,对''weekday'数组使用'new Array'效率不高,你最好不要使用'weekday = ['Sunday ”, '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']'。另外,不需要在for循环的每次迭代中重新创建数组。 – jackwanders

0

你可以做自己的逻辑很容易地使用标准的JavaScript Date对象。这里有一个让一个日期进入你的数组的例子。只需循环整个月即可调用该方法。 (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)); 
+0

我认为应该有'月+ 1' – diEcho

+0

不,月份是基于零。一月是零。这就是为什么我在该函数中调换它以符合他的变量。 https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/ – scottheckel

+0

这就是为什么如果用户输入七月('7'),然后Java脚本应解释为'6' – diEcho

0

试试这个,并在控制台中看到结果。

<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> 
相关问题