博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Date类型 - 实践
阅读量:5076 次
发布时间:2019-06-12

本文共 1211 字,大约阅读时间需要 4 分钟。

最近写了一个calendar程序,遇到了很多问题,下面我列出一些个人认为很有意思,也值得思考的问题,供大家参考。

注:每一个问题我给出的方法也许不是最好的方法,若有更好的方法,希望大牛来补充完善。

 

问题一:给定一个日期,如何获取该月的总天数。

方法一:hack技巧

思路:

var date = new Date(2017,1,0);

变量date表示的是2017年2月第0天,也就是1月的最后一天31号,以此类推。

代码:

function getSumDay(date) {            var day = new Date(date.getFullYear(), date.getMonth() + 1, 0);            return day.getDate();        }

 

方法二:常规思路

思路:

从该月第一天开始+1,当日期的月份和该月不等时,记录增加的次数,这个数值就是该月的天数。

代码:

function getSumDay(date) {            var dayNumber = 1; //初始化日号            var monthNumber = date.getMonth(); //月号            var sum = 0;            //给新日期初始化            var newDate = new Date(date.setDate(1));            //只要月份相等,说明还在该月中,继续循环,直到下一个月            for (var newMonthNumber = newDate.getMonth(); newMonthNumber == monthNumber; ++dayNumber) {                newDate = new Date(newDate.setDate(dayNumber));                newMonthNumber = newDate.getMonth();                ++sum;            }            return sum - 1;        }

方法三:hack方法

思路:因为一个月没有第32天,而setDate(day)中如果传入的day大于该月的天数,那么会自动进入下一个月。

代码:

function getSumDay(year,month){            return 32-new Data(year,month,32).getData();        }        alert(getSumDay(2017,2));

 

转载于:https://www.cnblogs.com/lijy/p/6284457.html

你可能感兴趣的文章
小算法
查看>>
201521123024 《java程序设计》 第12周学习总结
查看>>
新作《ASP.NET MVC 5框架揭秘》正式出版
查看>>
IdentityServer4-用EF配置Client(一)
查看>>
WPF中实现多选ComboBox控件
查看>>
读构建之法第四章第十七章有感
查看>>
Windows Phone开发(4):框架和页 转:http://blog.csdn.net/tcjiaan/article/details/7263146
查看>>
Unity3D研究院之打开Activity与调用JAVA代码传递参数(十八)【转】
查看>>
python asyncio 异步实现mongodb数据转xls文件
查看>>
TestNG入门
查看>>
【ul开发攻略】HTML5/CSS3菜单代码 阴影+发光+圆角
查看>>
[ZJOI2007]棋盘制作 【最大同色矩形】
查看>>
IOS-图片操作集合
查看>>
模板统计LA 4670 Dominating Patterns
查看>>
团队项目开发客户端——登录子系统的设计
查看>>
IO—》Properties类&序列化流与反序列化流
查看>>
session如何保存在专门的StateServer服务器中
查看>>
react展示数据
查看>>
测试计划
查看>>
选择器
查看>>