时常会遇到一些关于日期的处理逻辑,以下就此做一些记录,方便以后用:
1. 判断是否为闰年
能被4整除但不能被100整除,或可以被400整除
function isLeapYear(year) {
return (year % 4 == 0) && (year % 100 != 0 || year % 400 == 0);
}
某个月份是有29号,则为闰年
function isLeapYear(year) {
// 如果year年2月没有29则自动进一变为3月1日
var date = new Date(year, 1, 29)
return date.getDate() === 29
}
2.获取某月天数
将时间设置为这个月的下一月的第一天,然后回拨一秒
function monthDay(year, month) {
var date = new Date(year, month, 1, 0, 0, 0)
var yesterDay = new Date(date - 1000)
return yesterDay.getDate()
}
monthDay(2017, 2) // 28
monthDay(2017, 12) // 31
3.常用Date格式转换
转自https://blog.csdn.net/qq_39759115/article/details/78893853,内有其他转换记录
var myDate = new Date();
myDate.getYear(); //获取当前年份(2位)
myDate.getFullYear(); //获取完整的年份(4位,1970-????)
myDate.getMonth(); //获取当前月份(0-11,0代表1月) // 所以获取当前月份是myDate.getMonth()+1;
myDate.getDate(); //获取当前日(1-31)
myDate.getDay(); //获取当前星期X(0-6,0代表星期天)
myDate.getTime(); //获取当前时间(从1970.1.1开始的毫秒数)
myDate.getHours(); //获取当前小时数(0-23)
myDate.getMinutes(); //获取当前分钟数(0-59)
myDate.getSeconds(); //获取当前秒数(0-59)
myDate.getMilliseconds(); //获取当前毫秒数(0-999)
myDate.toLocaleDateString(); //获取当前日期
var mytime=myDate.toLocaleTimeString(); //获取当前时间
myDate.toLocaleString( ); //获取日期与时间
JS获取当前时间戳的方法-JavaScript 获取当前毫秒时间戳有以下三种方法:
var timestamp =Date.parse(new Date()); 结果:1280977330000 //不推荐; 毫秒改成了000显示
var timestamp =(new Date()).valueOf(); 结果:1280977330748 //推荐;
var timestamp=new Date().getTime(); 结果:1280977330748 //推荐;
4.某一年一共多少周
经计算,只有当闰年并且当年的1月1日为周六时,是54周,其他情况都是53周
function getWeeks(year) {
let days = this.isLeapYear(year) ? 366 : 365;
//当前年1月1日是周几
let weekIdx = (new Date(`${year}/01/01`)).getDay(); //0-6:周日-周六
let initDays = weekIdx === 0 ? 0 : 7 - weekIdx;
let firstIdx = weekIdx === 0 ? 0 : 1;//第一周不完整周数:0或1
let secondIdx = parseInt((days - initDays) / 7); //整周数 51-53
let thirdIdx = (days - initDays) % 7 === 0 ? 0 : 1;//最后一周部完整周数:0或1
return firstIdx + secondIdx + thirdIdx;
}