猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
js 获取当前周数,并可根据周数获取日期范围
第一步是获取当前日期的周数(日期从1月1号 是第一周,每周是周日开始)
第二步,周数是可改的,根据周数获取开始日期和结束日期。
跪求,大神指点
Zoe_z
浏览 4189
回答 1
1回答
橋本奈奈未
慕课的编辑器真的很不好用,复制过来自动把换行符去掉了。所以我就直接不用代码包裹了,自行复制到编辑器中格式化下吧。另外就是,这个代码我没怎么测,所以也不确定是否就完美实现了要求,还有这里是以周一为起点的,为了和moment的例子做比对,所以没有像题主说的用周日做起点。可以自行修改。建议可以研究下moment的实现。/*** 日期转周数* @example* date2Week()* // => 52* date2Week('2019-12-30')* // => 1* date2Week('2019-12-29')* // => 52* date2Week('2019-01-01')* // => 1* date2Week('2019-01-07')* // => 2* @param {string?} str 时间字符串* @return {number} 周数*/function date2Week(str) { // 获取date,不传则默认为当前date,这里没有做时间格式校验 var d = str ? new Date(str) : new Date(); // start为1/1对应的date【0时0分】 var start = new Date(d.getFullYear() + '/01/01'); // end 为当前date【0时0分】 var end = new Date(d.toLocaleDateString()); // 天数差 【上面的0时0分意在避免影响天数的计算】 var dayOffset = (end - start)/1000/60/60/24; // 以周一为一周起点,故而需要加上元旦时的偏移量 var base = dayOffset+start.getDay(); return ( dayOffset ? base/7 > 52 ? dayOffset%7+start.getDay() ? 1 : 52 : Math.ceil(base/7) :1);}/*** 周数转日期范围* @example* week2DateRange(52)* // => "2019/12/23~2019/12/29"* week2DateRange(51)* // => "2019/12/16~2019/12/22"* week2DateRange(1)* // => "2018/12/31~2019/1/6"* week2DateRange(2)* // returns "2019/1/7~2019/1/13"* week2DateRange(1,'2020')* // => "2019/12/31~2020/1/6"* @param {number} num 周数* @param {date?} [date] 指定日期* @return {string} 周数的日期范围*/function week2DateRange(num,date) { if(num < 1 || num > 52) return RangeError('周数必须符合:0<num<53'); // 接受浮点数,但做取整处理。 num = num|0; var d = date ? new Date(date) : new Date(); var start = new Date(d.getFullYear() + '/01/01'); // 当前的date[0时0分] var now = new Date(start.getTime() + (num-1)*7*24*60*60*1000); // 当前周的周一date,用当前毫秒减去偏差的毫秒 var begin = new Date(now.getTime() - (now.getDay()-1)*60*60*1000); // 在得出周一的date后,周日的date即可以通过setDate的方式直接设置即可 var finish = new Date(begin); finish.setDate(begin.getDate()+6); return begin.toLocaleDateString() + '~' + finish.toLocaleDateString();}
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
JavaScript
前端工具
学籍认证信息有误为啥不能取消验证审核
1 回答
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续