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

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

在这里先说明一下,月份,周几都是从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. SELECT - OVER 子句 (Transact-SQL)

    标题:SELECT - OVER 子句 (Transact-SQL) 地址:https://docs.microsoft.com/zh-cn/sql/t-sql/queries/select-over ...

  2. ASP.NET 文档

    标题:ASP.NET 文档 地址:https://docs.microsoft.com/zh-cn/aspnet/index#pivot=core&panel=core_overview 标题 ...

  3. Alpha-9

    前言 失心疯病源9 团队代码管理github 站立会议 队名:PMS 530雨勤(组长) 今天完成了那些任务 熬夜肝代码 代码签入github 明天的计划 最好能够完成对接环节 准备展示内容 还剩下哪 ...

  4. Thrift语法参考

    1.Types Thrift类型系统包括预定义基本类型,用户自定义结构体,容器类型,异常和服务定义 (1) 基本类型 bool: 布尔类型,占一个字节 byte: 有符号字节 i16:16位有符号整型 ...

  5. Linux的压缩/解压缩文件处理 zip & unzip

    Linux的压缩/解压缩命令详解及实例 压缩服务器上当前目录的内容为xxx.zip文件 zip -r xxx.zip ./* 解压zip文件到当前目录 unzip filename.zip 另:有些服 ...

  6. Java MD5加密类

    /************************************************* md5 类实现了RSA Data Security, Inc.在提交给IETF 的RFC1321中 ...

  7. xheditor在线编辑器在.netMVC4中的使用

    在线编辑器xheditor,测试感觉不错,特把使用方法记录如下 : 先看看基本使用方法,然后用实例来操作 1.xheditor 地址 http://xheditor.com/ 2.下载最新编辑器源码 ...

  8. BZOJ4916 神犇和蒟蒻(欧拉函数+杜教筛)

    第一问是来搞笑的.由欧拉函数的计算公式容易发现φ(i2)=iφ(i).那么可以发现φ(n2)*id(n)(此处为卷积)=Σd*φ(d)*(n/d)=nΣφ(d)=n2 .这样就有了杜教筛所要求的容易算 ...

  9. QoS专题-第3期-QoS实现之报文简单分类与标记

    QoS实现之报文简单分类与标记 上一期专题我们讲到,MQC中的流分类可以实现报文的分类,流行为可以对报文进行重标记,从而实现对流量的精细化差分服务.而优先级映射则可以根据802.1p优先级.DSCP优 ...

  10. 【BZOJ4943】【NOI2017】蚯蚓排队(哈希)

    [BZOJ4943][NOI2017]蚯蚓排队(哈希) 题面 BZOJ 洛谷 UOJ 题解 记得去年看网络同步赛的时候是一脸懵逼的. 昨天看到\(zsy\)做了,今天就看了看.. 这不是\(Hash\ ...