本文结合了网上的一些用法封装了一些获取各种日期用法的函数,可以用于制作日历,课程表等相关功能
1.获取当前日期(年月日)
var date = newDate();
//年月日
var curYear = date.getFullYear();
var curMonth = date.getMonth() + 1; //系统上的月份是从0开始 所以要加一
var curDate = date.getDate()
2.获取本月天数 (年月)
//获取这个月的天数
getThisMonthDays(year, month) {
returnnew Date(year, month, 0).getDate();
},
//调用
getThisMonthDays(2018,04)
3.判断当前日期是本月的第几周 (年月日)
//判断当前日期是本月的第几周
getMonthWeek(year, month, data) {
//a =当前是几号
//w=当前周几
//b = 6 - w = 当前周的还有几天过完(不算今天)
//a + b 的和在除以7 就是当天是当前月份的第几周
var date = newDate(),
w = date.getDay(),
d = date.getDate();
returnMath.ceil((d +6 - w) / 7); //当前日期加上本周未过的时间除以7向上取整得到本月是第几周
},
//调用
getMonthWeek(2018,04)
4.获取当前月有多少周 (年月)
//获取当前月有多少周
getWeeks(year, month) {
var d = newDate();
// 该月第一天
d.setFullYear(year, month -1,1);
var w1 = d.getDay();
if (w1 == 0) w1 =7;
// 该月天数
d.setFullYear(year, month,0);
var dd = d.getDate();
// 第一个周一
let d1;
if (w1 != 1) d1 =7 - w1 + 2;
else d1 = 1;
let week_count = Math.ceil((dd - d1 + 1) /7);
returnweek_count;
},
//调用
getWeeks(2018,04,01)
5.获取当前日期对应的周数数(’年月日‘)
//获取当前日期对应的周数数组
getWeek(target) {
let now = newDate(target);
let now_day = now.getDay();
let now_time = now.getTime();
let result = [0,1,2,3,4,5,6]
returnresult.map(i => (newDate(now_time +24 * 60* 60 *1000 * (i - now_day))).getDate())
},
//调用target里放得是日期字符串
getWeek('2018,04,01')
6.获取这个月第一天是周几(年月)
//获取这个月第一天是周几
getFirstDayOfWeek(year, month) {
returnnew Date(Date.UTC(year, month - 1, 1)).getDay();
},
7.把数字周几转化为汉字周记 0-周日
//把数字周几转化为汉字周记 0-周日
getDayName(day) {
var day=parseInt(day);
if(isNaN(day) || day<0 || day>6)
return false;
var weekday=["周日","周一","周二","周三","周四","周五","周六"];
return weekday[day];
}
8.
获取当前周 周一到周日的日期 (年月周)
//获取当前周 周一到周日的日期 如果是要周日到周六-1就行
getWeekTime(year, month,weekday) {
var d = new Date();
// 该月第一天
d.setFullYear(year, month-1, 1);
var w1 = d.getDay();
if (w1 == 0) w1 = 7;
// 该月天数
d.setFullYear(year, month, 0);
var dd = d.getDate();
// 第一个周一
let d1;
if (w1 != 1) d1 = 7 - w1 + 2;
else d1 = 1;
var monday = d1+(weekday-1)*7;
var sunday = monday + 6;
var from = year+"-"+month+"-"+monday;
var to;
if (sunday <= dd) {
to = year+"-"+month+"-"+sunday;
} else {
d.setFullYear(year, month-1, sunday);
let days=d.getDate();
to = d.getFullYear()+"-"+(d.getMonth()+1)+"-"+days;
}
console.log(weekday+" 从" + from + " 到 " + to + "");
}
EG:
下面是关于自己编程时在小程序上出现的一个小的bug,可能跟游览器支持的日期字符串不同的问题有关,解决方法就是改成能够支持的日期字符串。
(1) 获取当前日期所在周对应的days数组的函数
//获取当前日期对应的周数数组
target:'2018,4,24' '2018-4-24' '2018/4/24'
getWeek(target) {
letnow = new Date(target);
letnow_day = now.getDay();
letnow_time = now.getTime();
letresult = [0,1,2,3,4,5,6]
returnresult.map(i => (newDate(now_time +24 * 60* 60 *1000 * (i - now_day))).getDate())
},
(2) 后面调用
/
/
调用函数新日期对应的天数数组
iPhone上:
varnew_week_datacount = that.getWeek(newYear +'/' + newMonth + '/' + newData);
安卓~:
varnew_week_datacount = that.getWeek(newYear +',' + newMonth + ',' + newData);
varnew_week_datacount = that.getWeek(newYear +'-' + newMonth + '-' + newData);
tip:只在iPhone手机上做了测试 ,可以三种方式都尝试一下