史上最全时间处理函数(逐行注释)

获取任意周的周一、周末 获取任意月的前后n月的最后一天和第一天

详细函数如下

获取当前周的周一和周末 || 获取当前周的前后n周的周一和周末

函数注释:

入参:

date:基础日期

nWeek:计算的是哪周的周一和周日的日期

date必传 nWeek为数字类型,不传或0代表本周,-1代表上周,1代表下周

1.先将传入的date转换成毫秒数,是因为后续通过毫秒数进行nWeek周的加减

2.将传入的nWeek乘上每周的毫秒数就得到nWeek后的总毫秒数

3.nowTime - (day - 1) 当前传入日期周一的具体毫秒数

4.startTime: 计算得到周一的具体毫秒并加上nWeek

5.endTime: 计算得到周日的具体毫秒并加上nWeek

6.最后通过日期处理函数得到相对应的日期格式并输出数组

入参:
date:基础日期
nWeek:计算的是哪周的周一和周日的日期
date必传 nWeek为数字类型,不传或0代表本周,-1代表上周,1代表下周
getNowTimeWeek(date,nWeek){
let now = new Date(date); // 将不规则日期转换成标准日期格式
let nowTime = now.getTime(); // 将日期转化成毫秒数,以便于加减
let day = now.getDay(); // day为一周(0~6)的某一天的数字[0为周日]
let longTime = 24 * 60 * 60 * 1000; // 一天的毫秒数
let n = longTime * 7 * (nWeek || 0); // nWeek周的毫秒数(可接收负数)
let startTime = nowTime - (day - 1) * longTime + n; // 计算得到周一的具体毫秒并加上nWeek
let endTime = nowTime + (7 - day) * longTime + n; //计算得到周日的具体毫秒并加上nWeek
let solveStartTime = new Date(startTime); // 转换成标准日期格式
let solveEndTime = new Date(endTime); // 同上
let begin = this.toTimeFormat(solveStartTime); // 日期格式处理函数
let finish = this.toTimeFormat(solveEndTime); // 同上
return [begin,finish] // 输出
},

日期格式处理函数

// 日期格式处理函数(自动补零)  输出类型YYYY-MM-DD
toTimeFormat(solveTime){
let y = solveTime.getFullYear();
let m = solveTime.getMonth() + 1;
let d = solveTime.getDate();
m = m < 10 ? "0" + m: m; //补零
d = d < 10 ? "0" + d: d; //补零
let result = y + "-" + m + "-" + d;
return result
},

计算时间间隔

函数注释:

入参:

dateStart: 开始日期

dateEnd: 结束日期

1.将传入的两个日期均转成标准时间格式

2.aDay: 一天的毫秒数

3.通过后者减去前者得到两者时间间隔,间隔除以天数便可以得到间隔的天数,在根据具体需求计算去得时间的取整规则,该函数采取的是向上取整

入参:
dateStart: 开始日期
dateEnd: 结束日期
getTimeDiff(dateStart,dateEnd){
let aDate = new Date(dateStart); // 初始化第一个日期对象,将其转换成标准时间格式
let bDate = new Date(dateEnd); // 同上
let aDay = 24 * 60 * 60 * 1000; // 一天的毫秒时间
let diffDay = Math.ceil( (bDate - aDate) / aDay ); // 计算间隔天数(注意日期隐式转换)
return diffDay
},

补零函数

我们尝试将补零写成函数,减少代码体积

作用:将1-9的数字进行补零操作,其他数字直接输出

入参
m: 数字类型
addZero(m) {
return m < 10 ? "0" + m : m;
},

指定日期的本月最后一天

函数注释:

入参:

time: 指定日期

1.将传入时间转换成标准时间格式

2.获取当前年、当前月

3.new Date技巧,入参第三个可以为负数,当为0的时候就是传入的日期的上一个月的月末(这里理解一下:传入6即是7月份,又传入0 则为六月最后一天)

monthToLastDay(time) {
let date = new Date(time);
let nowMonth = date.getMonth() + 1; //当前月
let nowYear = date.getFullYear(); //当前年
//本月的最后一天
let monthEndDate = new Date(nowYear, nowMonth, 0);
let monthEnd = this.toTimeFormat(monthEndDate);
return monthEnd
},

指定日期的前n个月的第一天

入参
time: 日期
n: 前n个月
getFrontMonthN(time,n) {
let date = new Date(time); //获取标准日期格式
let currentYear = date.getFullYear(); //获取完整的年份
let currentMonth = date.getMonth(); //当前月份(0-11,0代表1月)
let nMonth; //当前月的前两个月
if (currentMonth < n) { // 如果当年月份不足以减去所减n月,则年份减一
currentYear -= 1; //年份减1
nMonth = currentMonth + 12 - n; //当前月的前两个月
} else {
nMonth = currentMonth - n; //当前月的前两个月
}
let nMonthFirstDay = new Date(currentYear, nMonth, 1); //当前月的前三个月的第一天
let monthStart = this.toTimeFormat(nMonthFirstDay );
return monthStart;
},

指定日期的后n个月的最后一天

入参
time: 日期
n: 前n个月
getBackMonthfour(time,n) {
let date = new Date(time); //获取标准日期格式
let currentYear = date.getFullYear(); //获取完整的年份
let currentMonth = date.getMonth() + 1; //当前月份(0-11,0代表1月)
let backNDate = new Date(currentYear, currentMonth + n, 0); //当前月的后四个月的最后一天
let monthEnd = this.toTimeFormat(backNDate);
return monthEnd ;
},

一些前端javaScript时间处理函数的更多相关文章

  1. JavaScript时间日期函数

    //随机数生成器Math.random() 装换为整数parseInt() 日期时间函数(需要用变量调用):var b = new Date(); //获取当前时间b.getTime() //获取时间 ...

  2. 前端学习 第六弹: javascript中的函数与闭包

    前端学习 第六弹:  javascript中的函数与闭包 当function里嵌套function时,内部的function可以访问外部function里的变量 function foo(x) {   ...

  3. web前端----JavaScript(JS)函数

    函数 函数定义 JavaScript中的函数和Python中的非常类似,只是定义方式有点区别. // 普通函数定义 function f1() { console.log("Hello wo ...

  4. JavaScript日期时间格式化函数

    这篇文章主要介绍了JavaScript日期时间格式化函数分享,需要的朋友可以参考下 这个函数经常用到,分享给大家. 函数代码: //格式化参数说明: //y:年,M:月,d:日,h:时,m分,s:秒, ...

  5. JavaScript - 时间函数

    时间美化函数 /* 1.< 60s, 显示为“刚刚” 2.>= 1min && < 60 min, 显示与当前时间差“XX分钟前” 3.>= 60min &am ...

  6. 深入理解javascript:揭秘命名函数表达式

    这是一篇转自汤姆大叔的文章:http://www.cnblogs.com/TomXu/archive/2011/12/15/2288411.html 前言 网上还没用发现有人对命名函数表达式进去重复深 ...

  7. python学习之路前端-JavaScript

    JavaScript简介 JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本 ...

  8. Web前端-JavaScript基础教程上

    Web前端-JavaScript基础教程 将放入菜单栏中,便于阅读! JavaScript是web前端开发的编程语言,大多数网站都使用到了JavaScript,所以我们要进行学习,JavaScript ...

  9. 前端——JavaScript

    何谓JavaScript?它与Java有什么关系? JavaScript与HTML.CSS组合使用应用于前端开发,JavaScript是一门独立的语言,浏览器内置了JS的解释器.它除了和Java名字长 ...

  10. Fundebug前端JavaScript插件更新至1.2.0

    摘要: Fundebug的前端JavaScript错误监控插件更新至1.2.0:支持监控WebSocket连接错误:修复了监控unhandledrejection错误的BUG,即未用catch处理的P ...

随机推荐

  1. 【VMware VCF】VCF 5.2:挂载远程 vSAN 数据存储。

    VMware vSAN 解决方案中,为了充分利用 vSAN HCI 集群内的存储资源, vSAN HCI 和 vSAN HCI 集群之间可以相互共享存储资源,这种解决方案早期叫 vSAN HCI Me ...

  2. 【Git代码仓库】之合并分支代码操作到主干代码上(界面版/命令版)

    一.代码管理仓库,合并分支代码到主干(界面版*) 1.从远程Git代码仓库克隆到本地 # Git克隆 git clone git@e.coding.net:XXX/SQM/SC_WEB_Project ...

  3. docker高级篇2-分布式存储之三种算法

    面试题: 1~2亿条数据需要缓存,请问如何设计这个缓存案例? 答:单机单台100%是不可能的.肯定是分布式缓存的.那么用Redis如何落地? 一般有三种方案: 哈希取余分区:一致性哈希算法分区:哈希槽 ...

  4. 英文短语和单词备忘 - as well as

    English phrases and vocabulary notes: as well as "as well as" 是一个连接词组,通常用于连接两个相似的元素,以强调两者都 ...

  5. CSIG青年科学家会议圆满举行,合合信息打造智能文档处理融合研究新范式

          近期,第十九届中国图象图形学学会青年科学家会议(简称"会议")在广州召开.会议由中国图象图形学学会(CSIG)主办,琶洲实验室.华南理工大学.中山大学.中国图象图形学学 ...

  6. Google reCAPTCHA

    Spam from Website Enquiry 网站一般上都会有 Contact Us 页面. 里头有一个表格, 访客可以通过提交表格发出对产品和服务的讯问. 本来是一个质询功能, 但就是有坏人利 ...

  7. C# 基础 – 装箱 / 拆箱, 堆 / 栈

    前言 有些概念可能你用不到, 但是懂也无妨. 装箱 / 拆箱 参考: C#装箱和拆箱(Boxing 和 UnBoxing) 通常讲到这些都跟性能有关. 把值类型变成引用类型就叫装箱. int numb ...

  8. IOI2000 邮局 加强版 题解

    [IOI2000] 邮局 加强版 题解 考虑动态规划,设 \(f_{i,j}\) 为经过了 \(i\) 个村庄,正在建第 \(j\)​ 个邮局的最优距离. 以及 \(w_{i,j}\) 表示区间 \( ...

  9. SpringMVC —— SpringMVC简介

    SpringMVC SpringMVC技术 与 Servlet技术功能等同,均属于web层开发技术 是一种基于java实现MVC模型的轻量级Web框架 SpringMVC 入门案例          ...

  10. 课时05:Linux必备系统命令