怎样用JavaScript列出一年中所有星期天的日期
咦,只要弄个365天的数组隔7获取一下不就得到一个新数组了。这得多基础啊\u0026lt;script\u0026gt;function $getSunday(_year){\t\tvar _leap=_year%4===0\u0026amp;\u0026amp;_year%100!==0;\t\tvar _all=;\t\tvar _end;\t\tfor(var _month=1;_month\u0026lt;=12;++_month){\t\tswitch(_month){\t\t\tcase 1:case 3:case 5:case 7:case 8:case 10:case 12:\t\t\t\t_end=31;break;\t\t\tcase 4:case 6:case 9:case 11:\t\t\t\t_end=30;break;\t\t\tcase 2:\t\t\t\t_end=_leap?29:28;\t\t}\t\tfor(var _date=1;_date\u0026lt;=_end;++_date){\t\t\t_all.push(\t\t\t\t_year\t\t\t\t+\u0026#39;-\u0026#39;+(_month\u0026gt;9?_month:\u0026#39;0\u0026#39;+_month)\t\t\t\t+\u0026#39;-\u0026#39;+(_date\u0026gt;9?_date:\u0026#39;0\u0026#39;+_date)\t\t\t);\t\t}\t}\t\tvar _begin=new Date;\t_begin.setFullYear(_year);\t_begin.setMonth(0);\t_begin.setDate(1);\t_begin=;\t\t_end=_leap?366:365;\t\tvar _sunday=;\t\twhile(_begin\u0026lt;_end){\t\t_sunday.push(_all);\t\t_begin+=7;\t}\t\tdocument.write(_sunday.join(\u0026#39;\u0026lt;br\u0026gt;\u0026#39;));\t}$getSunday(2016);\u0026lt;/script\u0026gt;
先直观实现功能再慢慢优化运行效率。下面是 @刘春龙的方案的具体代码(支持任意指定月份和日期):\u0026lt;script\u0026gt;function $getSunday(_year,_month,_date){\tvar _today=new Date;\t_year=_year||_today.getFullYear();\t_month=_month||_today.getMonth()+1;\t_date=_date||_today.getDate();\t_today=null;\tvar _1d=24*60*60*1000;\tvar _7d=7*_1d;\tvar _begin=new Date;\t_begin.setFullYear(_year);\t_begin.setMonth(_month-1);\t_begin.setDate(_date);\t_begin=_begin.getTime()+*_1d;\tvar _end=new Date;\t_end.setFullYear(_year+1);\t_end.setMonth(_month-1);\t_end.setDate(_date);\t_end=_end.getTime()-_1d;\tvar _sundays=;\tfor(var _sunday=new Date;_begin\u0026lt;_end;_begin+=_7d){\t\t_sunday.setTime(_begin);\t\tvar _month=_sunday.getMonth()+1;\t\tvar _date=_sunday.getDate();\t\t_sundays.push(\t\t\t_sunday.getFullYear()\t\t\t+\u0026#39;-\u0026#39;+(_month\u0026gt;9?_month:\u0026#39;0\u0026#39;+_month)\t\t\t+\u0026#39;-\u0026#39;+(_date\u0026gt;9?_date:\u0026#39;0\u0026#39;+_date)\t\t);\t}\tdocument.write(_sundays.join(\u0026#39;\u0026lt;br\u0026gt;\u0026#39;));}$getSunday(2016,1,1);\u0026lt;/script\u0026gt;
注解:变量以_开头的是(临时)局部变量,几个_就是第几层作用域;含$的是永久(全局)变量。_$开头类似其它编程语言的静态变量,属于闭包用法,在本例中未使用。其余均为语法关键词或原生方法。
■网友
谢邀,但是我不会JavaScript,还好这道题目也和语言无关,C语言可能可以通过调用函数来直接比较两个日日期,但是你们老师应该不是这个意思,Ta的意思应该是要你们完全通过编程来实现,以前我们学习C语言的时候老师给过一道题目是要求输入任意年份,然后输出这一年的日历出来,就是Linux下面的ca,l简化一下就是这道题目。下面是C语言的实现,都是数字计算的结果,你们学JavaScript的应该能改写成JavaScript不是问题了。不过出了一个问题就是我真的是按照周日来写的代码可是实际上它输出的是周六,我试了试发现如果要输出周日呢,要把用来比较的值改为1,在代码注释里面有(/* change to 1 for SUN, but I don\u0026#39;t know why! */),这不是我设计代码的本意所以我没有改。这个问题我不想花时间调试了,又没有钱挣而且改成1就可以交作业了不是……如果有兴趣请帮忙看看为啥几点说明:因为1972年是闰年,所以计算的时候有yearPassed - 2,其实不减也可以这个程序只能处理1970年和以后的年份,以前的是处理不了的
推荐阅读
- 聪明人养花,这3种“花”怎样也要养一盆,每年能省不少医药费
- 互联网怎样解决“家政服务上门速度慢”的问题
- 怎样看待从1月8号起,QQ钱包开始提现收费
- 银行it人怎样转型
- 汽车|冬天怎样让车内温度快速升高?座椅加热的最佳使用方式二,外循环的作用总结
- 怎样进入通信行业
- 怎样评价扶他柠檬茶的小说《云养汉》的结尾
- 怎样成为一名合格的Python程序员?
- 怎样评价华为、诺基亚、中兴中标中国移动高端路由交换设备扩容集采
- 怎样评价类似前橙会、百老汇、南极圈这样类型的离职帮抱团,对企业的积极意义和消极意义