八百年一次,这个七月有5个礼拜五,5个礼拜六,5个礼拜天(js Date对象练习良好方案)[原]

简介: 今早看园友的文章八百年一次……,心想到底是不是八百年一遇,就用js自己验证了一下; 园友判断有5个礼拜五,5个礼拜六,5个礼拜天的方法: 1:该月必须有31天 2:该月1号必须是星期5. (我的判断是最后一天是星期天,求最后一天是为了方便判断这个月有的天数)         ...

今早看园友的文章八百年一次……,心想到底是不是八百年一遇,就用js自己验证了一下;

园友判断有5个礼拜五,5个礼拜六,5个礼拜天的方法:
1:该月必须有31天

2:该月1号必须是星期5. (我的判断是最后一天是星期天,求最后一天是为了方便判断这个月有的天数)

     < script >
        
// move back one month
         function  prevMonth(thisMonth, thisYear) {
            
if  (thisMonth  ==   1 ) {
                thisM 
=   12 ;
                thisY 
=  (thisYear  -   1 );
            }
            
else  {
                thisM 
=  (thisMonth  -   1 );
                thisY 
=  thisYear;
            }
        }

        
// move forward one month
         function  nextMonth(thisMonth, thisYear) {
            
if  (thisMonth  ==   12 ) {
                thisM 
=   1 ;
                thisY 
=  (thisYear  +   1 )
            }
            
else  {
                thisM 
=  (thisMonth  +   1 );
                thisY 
=  thisYear;
            }
        }
        
// 转化为短的日期格式
         function  toShortDate(date) {
            
var  dateStr  =  date.getFullYear()  +   " - "   +  (date.getMonth()  +   1 +   " - "   +  date.getDate();
            
return  dateStr;
        }

        
var  dtNow  =   new  Date();
        
var  thisM  =  dtNow.getMonth() + 1 ;
        
var  thisY  =  dtNow.getFullYear();
        
var  arrayRecord  =  [];
        
while  (thisY  >=   1900 ) {
            prevMonth(thisM, thisY);
            
var  lastDayOfPrevMonth  =   new  Date(thisY, thisM,  0 );
            
if  (lastDayOfPrevMonth.getDay()  ==   0   &&  lastDayOfPrevMonth.getDate()  ==   31 ) {
                arrayRecord.push(toShortDate(lastDayOfPrevMonth));
            }
        }

        document.write(arrayRecord.join(
" \r " ));
    
< / script>

先前一次七月份有五个周五,五个周六,五个周天是:

2005-7

 

 感谢你留言,转载请声明出处(http://www.cnblogs.com/flowerszhong/)。 

 

 

相关文章
|
JavaScript 前端开发
如何在 JavaScript 中使用 __proto__ 实现对象的继承?
使用`__proto__`实现对象继承时需要注意原型链的完整性和属性方法的正确继承,避免出现意外的行为和错误。同时,在现代JavaScript中,也可以使用`class`和`extends`关键字来实现更简洁和直观的继承语法,但理解基于`__proto__`的继承方式对于深入理解JavaScript的面向对象编程和原型链机制仍然具有重要意义。
|
Web App开发 JavaScript 前端开发
如何确保 Math 对象的方法在不同的 JavaScript 环境中具有一致的精度?
【10月更文挑战第29天】通过遵循标准和最佳实践、采用固定精度计算、进行全面的测试与验证、避免隐式类型转换以及持续关注和更新等方法,可以在很大程度上确保Math对象的方法在不同的JavaScript环境中具有一致的精度,从而提高代码的可靠性和可移植性。
|
编解码 JavaScript 前端开发
【Java进阶】详解JavaScript的BOM(浏览器对象模型)
总的来说,BOM提供了一种方式来与浏览器进行交互。通过BOM,你可以操作窗口、获取URL、操作历史、访问HTML文档、获取浏览器信息和屏幕信息等。虽然BOM并没有正式的标准,但大多数现代浏览器都实现了相似的功能,因此,你可以放心地在你的JavaScript代码中使用BOM。
393 23
|
JavaScript 前端开发 测试技术
在 golang 中执行 javascript 代码的方案详解
本文介绍了在 Golang 中执行 JavaScript 代码的四种方法:使用 `otto` 和 `goja` 嵌入式 JavaScript 引擎、通过 `os/exec` 调用 Node.js 外部进程以及使用 WebView 嵌入浏览器。每种方法都有其适用场景,如嵌入简单脚本、运行复杂 Node.js 脚本或在桌面应用中显示 Web 内容。
1350 15
在 golang 中执行 javascript 代码的方案详解
|
JSON 前端开发 JavaScript
JavaScript中对象的数据拷贝
本文介绍了JavaScript中对象数据拷贝的问题及解决方案。作者首先解释了对象赋值时地址共享导致的值同步变化现象,随后提供了五种解决方法:手动复制、`Object.assign`、扩展运算符、`JSON.stringify`与`JSON.parse`组合以及自定义深拷贝函数。每种方法都有其适用场景和局限性,文章最后鼓励读者关注作者以获取更多前端知识分享。
306 1
JavaScript中对象的数据拷贝
|
存储 网络架构
Next.js 实战 (四):i18n 国际化的最优方案实践
这篇文章介绍了Next.js国际化方案,作者对比了网上常见的方案并提出了自己的需求:不破坏应用程序的目录结构和路由。文章推荐使用next-intl库来实现国际化,并提供了详细的安装步骤和代码示例。作者实现了国际化切换时不改变路由,并把当前语言的key存储到浏览器cookie中,使得刷新浏览器后语言不会失效。最后,文章总结了这种国际化方案的优势,并提供Github仓库链接供读者参考。
1135 0
Next.js 实战 (四):i18n 国际化的最优方案实践
|
JavaScript 前端开发
JavaScript Date
【10月更文挑战第06天】
275 18
|
JavaScript 前端开发 图形学
JavaScript 中 Math 对象常用方法
【10月更文挑战第29天】JavaScript中的Math对象提供了丰富多样的数学方法,涵盖了基本数学运算、幂运算、开方、随机数生成、极值获取以及三角函数等多个方面,为各种数学相关的计算和处理提供了强大的支持,是JavaScript编程中不可或缺的一部分。
|
存储 JavaScript 前端开发
JavaScript 对象的概念
JavaScript 对象的概念
191 4
|
存储 JavaScript 前端开发
js中函数、方法、对象的区别
js中函数、方法、对象的区别
421 2