这两天在做一个报表体统,其中涉及到了一个根据本周,上周,本月,上月的时间来进行查询的问题,在这个我就教一下大家怎么实现,大家如果有更好的实现方法的,我也希望大家能说出来,我们交流交流.

首先呢,我写了一个方法,能实现获取本周,上周的开始时间,并且解决了跨年的问题

在这里先说明一下,月份,周几都是从0开始的这一点是需要我们注意的.

本周,上周的开始结束时间

function getTime(n){
var now=new Date();
var year=now.getFullYear();
//因为月份是从0开始的,所以获取这个月的月份数要加1才行
var month=now.getMonth()+1;
var date=now.getDate();
var day=now.getDay();
console.log(date);
//判断是否为周日,如果不是的话,就让今天的day-1(例如星期二就是2-1)
if(day!==0){
n=n+(day-1);
}
else{
n=n+day;
}
if(day){
//这个判断是为了解决跨年的问题
if(month>1){
month=month;
}
//这个判断是为了解决跨年的问题,月份是从0开始的
else{
year=year-1;
month=12;
}
}
now.setDate(now.getDate()-n);
year=now.getFullYear();
month=now.getMonth()+1;
date=now.getDate();
console.log(n);
s=year+"年"+(month<10?('0'+month):month)+"月"+(date<10?('0'+date):date)+"日";
return s;
}
/***参数都是以周一为基准的***/
//上周的开始时间
console.log(getTime(7));
//上周的结束时间
console.log(getTime(1));
//本周的开始时间
console.log(getTime(0));
//本周的结束时间
console.log(getTime(-6));

上个月的结束时间

解决思路:

1.用户可以选择是否传入时间串,如果传入的话,就按传入的时间串定义时间,如果不是的话,就按当前时间来定义时间

2.判断当前的月份或者要判断的时间的当前月是否是1月份,如果是的话,那么年份就要-1,上个月的月份就是12月份

3.如果不是一月份的话,那么年份就不要-1,因为是同一年,所以只要月份-1就可以了

4.获取最后一天思路是:获取下个月第一天离1970年的毫秒数,然后减去一天时间的毫秒数,就是这个月的最后一天离1970年的毫秒数,根据这个毫秒数计算即可

function getMonth(dateStr){
let last_year=0,last_month=0,last_date=0,now=''
if(dateStr){
now=new Date(dateStr)
}
else{
now=new Date()
} let year=now.getFullYear()
let month=(now.getMonth()+1).toString().padStart(2, '0')
let date=now.getDate().toString().padStart(2, '0') if(month==1){
last_year=year-1
last_month=12
last_date=new Date(last_year,last_month,1)
return `${last_year}:${last_month}:${(new Date(last_date.getTime()-1000*60*60*24)).getDate()}`
}
else{
last_date=new Date(year,month-1,1)
return `${year}:${(month-1).toString().padStart(2,0)}:${(new Date(last_date.getTime()-1000*60*60*24)).getDate()}`
}
}

js获取本周、上周的开始结束时间的更多相关文章

  1. js 获取 本周、上周、本月、上月、本季度、上季度的开始结束日期

    js 获取 本周.上周.本月.上月.本季度.上季度的开始结束日期 /**  * 获取本周.本季度.本月.上月的开始日期.结束日期  */ var now = new Date(); //当前日期 va ...

  2. JS获取本周、本季度、本月、上月的开始日期、结束日期

    /** * 获取本周.本季度.本月.上月的开始日期.结束日期 */ var now = new Date();                    //当前日期 var nowDayOfWeek = ...

  3. js获取昨天/上周/上个月开始和结束的时间戳,可以设置时分秒 js obtain start and end timestamp of yesterday/last week/last month, with set of hour/minute/second

    //obtain timestamp of last week var now=new Date() var nowDayOfWeek = now.getDay(); //今天本周的第几天 var n ...

  4. JS获取本周、本季度、本月、上月、本年的开始日期、结束日期

    /** * 获取本周.本季度.本月.上月的开始日期.结束日期 */ var now = new Date(); //当前日期  var nowDayOfWeek = now.getDay(); //今 ...

  5. Asp.net C# 获取本周上周本月上月本年上年第一天最后一天时间大全

    DateTime dt = DateTime.Now; int weeknow = Convert.ToInt32(DateTime.Now.DayOfWeek); ) * weeknow + ; D ...

  6. moment.js获取本周本月本年的开始日期和结束日期

    //获取本日 const startDate = moment().format('YYYY-MM-DD'); const startDate = moment().format('YYYY-MM-D ...

  7. java获取本周 上周的所有日期

    1 根据当前日期获得所在周的日期区间(周一和周日日期) public String getTimeInterval(Date date) { Calendar cal = Calendar.getIn ...

  8. php 获取指定月份的开始结束时间

    /** * * 获取指定年月的开始和结束时间戳 * * @param int $y 年份 * @param int $m 月份 * @return array(开始时间,结束时间) */ functi ...

  9. js获取本周日期

    JS获取到本周的日期 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> &l ...

随机推荐

  1. Scrum立会报告+燃尽图(十月十五日总第六次):视频上传及选题介绍工作

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2196 Scrum立会master:田良 一.小组介绍 组长:付佳 组员: ...

  2. 【探路者】团队Alpha周贡献分数分配结果

    经本组成员商议,根据老师提供的分数,(每人携带10分进入团队,[探路者]团队7人,共计35分). 本周每位同学携带10分进入组内,7人共计70分.分数公布如下: 吴雨丹 15分 贾雅杰 12分 蔺依铭 ...

  3. 第三次c++作业

    https://github.com/egoistor/3Elevators-scheduling 老实说,因为这周时间紧张,(高数的期中考和一些奇奇怪怪的时期), 所以代码大体是有,但是很多细节处理 ...

  4. 结对作业_Two

    Part 1.前言 (附:本次编码涵盖的所有功能均为java语言实现) 结对项目作业 结对同学高裕翔的博客 个人github传送门 博文pdf链接 Part 2.具体分工 本次的结对作业我们简单的拆分 ...

  5. 《DWZ笔记一》<select>动态联动菜单

    联动菜单,即组合框Combo box,在DWZ文档中对组合框combox的是这样描述的: 在传统的select 用class 定义:class=”combox”, html 扩展:保留原有属性name ...

  6. 重写JdbcRDD支持Sql命名参数和分区

    Spark提供的JdbcRDD很不好用,没法指定命名参数,而且必须要提供两个Long类型的参数表示分区的范围,如果数据表没有long类型的字段或者不需要条件,那就不能用JdbcRDD了.这里我简单重写 ...

  7. 安装DHCP 服务器 指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码

    DHCP服务详解 前言:动态主机配置协议,给局域网内的主机分配IP地址,子网掩码,网关,DNS ARP协议 arp: address resolveing protocol (地址解析协议) 实现:I ...

  8. 数学口袋精灵感受与BUG

    232朱杰 http://www.cnblogs.com/alfredzhu https://github.com/alfredzhu/ 组长,团队 230蔡京航 http://www.cnblogs ...

  9. 3dContactPointAnnotationTool开发日志(三一)

      在玩的时候遇到了一个python的问题: Traceback (most recent call last): File ".\convert.py", line 13, in ...

  10. Delphi编程防止界面卡死的方法经验分享

    Delphi编程防止界面卡死的方法经验分享! 1.循环里面防止界面卡死的方法可以使用Application.ProcessMessages:  例如下列方法:    var      n: Integ ...