js 获取每月有几周,根据年月周获取该周从周一到周日的日期等方法
本文基于react-native
本人在用react-native写一个关于课程表的APP时需要课程表按照日期周期显示,网上查了许多方法,都没有达到自己想要的效果,根据一些方法的参考,再根据自己思维写出自己想要的效果如下图所示

获取每月有几周(注:从第一个周一开始算该月第一周)
getWeeks(year, month) {
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;
let week_count = Math.ceil((dd-d1+1)/7);
return week_count;
}
根据年月周获取该周从周一到周日的日期
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 + "");
}
获取每月第几周的周一的日期
getMondayTime(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;
return monday;
}
获取周一的日期
getMonDate() {
var d=new Date(),
day=d.getDay(),
date=d.getDate();
if(day==1)
return d;
if(day==0)
d.setDate(date-6);
else
d.setDate(date-day+1);
return d;
}
获得周期名字
getDayName(day) {
var day=parseInt(day);
if(isNaN(day) || day<0 || day>6)
return false;
var weekday=["周日","周一","周二","周三","周四","周五","周六"];
return weekday[day];
}
获得当前日期在当月第几周
//不包括跟上个月重合的部分
getMonthWeek(a, b, c) {
var date = new Date(a, parseInt(b) - 1, c), w = date.getDay(), d = date.getDate();
return Math.ceil(
(d + 6 - w) / 7
);
}
获取当月最后一天日期
getLastDay(year,month) {
var new_year = year; //取当前的年份
var new_month = month++;//取下一个月的第一天,方便计算(最后一天不固定)
if(month>12) {
new_month -=12; //月份减
new_year++; //年份增
}
var new_date = new Date(new_year,new_month,1); //取当年当月中的第一天
return (new Date(new_date.getTime()-1000*60*60*24)).getDate();//获取当月最后一天日期
}
根据当前日期获取该天所在周,若该月1号不是周一,获取该月第一周的周一日期,小于该日期的归为上个月最后一周
//当前日期几月第几周
showDate(){
var that=this;
var d=this.getMonDate();
var ds=new Date();
var arr=[];
for(var i=0; i<7; i++) {
let weekDay=this.getDayName(d.getDay());
let date=d.getDate()+'日';
if(weekDay=='周一'){
let beginTime=ds.getFullYear()+'-'+(d.getMonth()+1)+'-'+d.getDate();
that.state.beginTime = beginTime;
}
if(weekDay=='周日'){
let endTime=ds.getFullYear()+'-'+(d.getMonth()+1)+'-'+d.getDate();
that.state.endTime = endTime;
}
arr.push({weekDay:weekDay,date:date});
d.setDate(d.getDate()+1);
}
let month=ds.getMonth()+1;
let weeks=this.getMonthWeek(ds.getFullYear(),month,ds.getDate())-1;
//每月周一日期
let oneDate=that.getMondayTime(ds.getFullYear(),month,1);
if(ds.getDate()<oneDate){
month=ds.getMonth();
weeks=this.getWeeks(ds.getFullYear(),month);
}
console.log('month:',month,'weeks:',weeks);
this.setState({
list:arr,
yearDate:ds.getFullYear(),
monthDate:month,
month:ds.getMonth()+1,
monthWeek:'第'+weeks+'周',
theMonthWeek:'第'+weeks+'周'
});
}
js 获取每月有几周,根据年月周获取该周从周一到周日的日期等方法的更多相关文章
- C#获取周一、周日的日期 函数类
#region 得到一周的周一和周日的日期 /// <summary> /// 计算本周的周一日期 /// </summary> ...
- mysql获取当前日期的周一和周日的日期
,,date_format(curdate(),)//获取当前日期 在本周的周一 的日期 ,,date_format(curdate(),)//获取当前日期 在本周的周日 的日期
- JAVA获取当前日期时间所在周的周一和周日日期
/** * 获取当前时间所在周的周一和周日的日期时间 * @return */ public static Map<String,String> getWeekDate() { Map&l ...
- JS 获取每月有几周(每周五到周四算作一周)
原文地址:https://caochangkui.github.io/data-week/ 将每周五至周四算作一周,计算每月有几周,并获取到每周的起始时间. 日期格式化 Date.prototype. ...
- js实现获取当前时间是本月第几周和年的第几周的方法
js实现获取当前时间是本月第几周和年的第几周的方法 获取本月第几周的方法: var getMonthWeek = function (a, b, c) { /** * a = d = 当前日期 * b ...
- js获取选中日期的当周的周一和周日
js获取选中日期的当周的周一和周日 第一种方法(推荐): function getWeekStr(str) { // 将字符串转为标准时间格式 str2 = Date.parse(str); let ...
- PHP获取日期对应星期、一周日期、星期开始与结束日期的方法
本文实例讲述了PHP获取日期对应星期.一周日期.星期开始与结束日期的方法.分享给大家供大家参考,具体如下: /* * 获取日期对应的星期 * 参数$date为输入的日期数据,格式如:2018-6-22 ...
- js中style,currentStyle和getComputedStyle的区别以及获取css操作方法
在js中,之前我们获取属性大多用的都是ele.style.border这种形式的方法,但是这种方法是有局限性的,该方法只能获取到行内样式,获取不了外部的样式.所以呢下面我就教大家获取外部样式的方法,因 ...
- js获取table checkbox选中行的值.mdjs获取table checkbox选中行的
<!DOCTYPE html> <html> <head> <script src="https://cdn.staticfile.org/jque ...
随机推荐
- Vue.js2.0中的变化(持续更新中)
最近自己在学习Vue.js,在看一些课程的时候可能Vue更新太块了导致课程所讲知识和现在Vue的版本不符,从而报错,我会在以后的帖子持续更新Vue的变化与更新,大家也可以一起交流,共同监督学习! 1. ...
- vue2.0 练习项目-外卖APP(1)
前言 vue这个框架现在挺流行的,作为一个专注前端100年的代码爱好者,学习下路径流行的框架是必须的!在网上搜索vue的项目是比较少的,在官网进行了入门学后,没有一个项目练习巩固下,学了就等于没学,所 ...
- ios 类的内部结构
1. Class 和 Object 的定义 /// An opaque type that represents an Objective-C class. typedef struct objc_c ...
- c++ 类覆盖方法中的协变返回类型
c++ 类覆盖方法中的协变返回类型 在C++中,只要原来的返回类型是指向类的指针或引用,新的返回类型是指向派生类的指针或引用,覆盖的方法就可以改变返回类型.这样的类型称为协变返回类型(Covarian ...
- Android 开发笔记___复选框__checkbox
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout ...
- AngularJS学习篇(十一)
AngularJS 表格 ng-repeat 指令可以完美的显示表格. <!DOCTYPE html> <html> <head> <meta charset ...
- js 时间字符串转化为时间
对于时间字符串格式为:"2017-03-03 12:23:55"; IE:显示无效的日期 new Date("2017-03-3 12:23:55") //[d ...
- php缓存模块apc可能导致php-fpm终止
如果你的网站出现502错误.同时你网站中又使用了apc模块来做缓存处理.那么这篇文章兴许能帮到你. 首先,查看了php-fpm 的进程数. 发现php-fpm的进程数已经到达了php-fpm.conf ...
- ueditor 和 umeditor 粘贴过滤问题
最近遇到需要将WORD WPS等复制的带有格式的内容粘贴到富文本编辑器里面去掉冗余的HTML,只保留最有用的部分. 第一步肯定是先查官方文档了. http://fex.baidu.com/uedito ...
- 关于史考特证券(scottrade Inc)资金转出的手续费问题
投资美股账户的朋友可能开始的时候并没有关心史考特账户转出的费用,其实,仔细算一下这个费用还是蛮贵的,根据官网的文档可以明确知道,转出史考特账户资金到国内银行的费用由以下几项组成: 1. 国际电汇资金费 ...