js 时间常用处理方法

众所周知,JavaScript核心包含Data()构造函数,用来创建表示时间和日期的对象。
如果给大家分享的是整篇的api,想必大家都没有什么看的欲望,如果你还对Data对象不是很了解,请先移步陪你读书

今天主要跟大家梳理一下,常用的时间、日期处理方法,方便大家使用和理解

格式化时间

老生常谈,大概会这么写

1234567891011
var format = function (time) {         var y = time.getFullYear(); //getFullYear方法以四位数字返回年份        var M = time.getMonth() + 1; // getMonth方法从 Date 对象返回月份 (0 ~ 11),返回结果需要手动加一        var d = time.getDate(); // getDate方法从 Date 对象返回一个月中的某一天 (1 ~ 31)        var h = time.getHours(); // getHours方法返回 Date 对象的小时 (0 ~ 23)        var m = time.getMinutes(); // getMinutes方法返回 Date 对象的分钟 (0 ~ 59)        var s = time.getSeconds(); // getSeconds方法返回 Date 对象的秒数 (0 ~ 59)        return y + ‘-‘ + M + ‘-‘ + d + ‘ ‘ + h + ‘:‘ + m + ‘:‘ + s;}

var time1 = format(new Date());

但是有什么问题呢?一般来说小于10的值,要在前面添加字符串‘0’的,我们大可以写个判断来解决他,但是太麻烦了~

其实可以这样

12345678
var format = function (time) {       var date = new Date(+time + 8 * 3600 * 1000);    	return date.toJSON().substr(0, 19).replace(‘T‘, ‘ ‘).replace(/-/g, ‘.‘);}var time1 = format(new Date());

//Date的‘toJSON’方法返回格林威治时间的JSON格式字符串,转化为北京时间需要额外增加8个时区,然后把‘T’替换为空格,即是我们需要的时间格式,后面可以通过正则将日期分隔符换成任何想要的字符。//一元加操作符可以把任何数据类型转换成数字,所以获取时间对象对应毫秒数的另一个方法是+Date或Number(Date)

获取当月最后一天

一个月可能有28/29/30/31天,使用写死数据的方式来解决闰年和大小月显然是不科学的。

12345678
function getLastDayOfMonth (time) {    var month = time.getMonth();    time.setMonth(month+1);    time.setDate(0);    return time.getDate()}getLastDayOfMonth(new Date())//先月份加一,再取上个月的最后一天

获取这个季度第一天

用来确定当前季度的开始时间,常用在报表中

12345678910111213141516
function getFirstDayOfSeason (time) {    var month = time.getMonth();    if(month <3 ){        time.setMonth(0);    }else if(2 < month && month < 6){        time.setMonth(3);    }else if(5 < month && month < 9){        time.setMonth(6);    }else if(8 < month && month < 11){        date.setMonth(9);    }    time.setDate(1);    return time;}getFirstDayOfSeason(new Date())//先月份加一,再取上个月的最后一天

获取中文星期

这也是个比较常见的雪球,完全没必要写一长串switch啦,直接用charAt来解决。

1
let time ="日一二三四五六".charAt(new Date().getDay());

获取今天是当年的第几天

来看看今年自己已经浪费了多少时光~

1234
var time1 = Math.ceil(( new Date() - new Date(new Date().getFullYear().toString()))/(24*60*60*1000));

//需要注意的是new Date()不设置具体时间的话new Date(2019)得到的不是0点而是8点 //Tue Jan 01 2019 08:00:00 GMT+0800 (中国标准时间)

获取今天是当年的第几周

日历、表单常用

123
var week = Math.ceil(((new Date() - new Date(new Date().getFullYear().toString()))/(24*60*60*1000))/7);

//在获取第几天的基础上除7,向上取整

获取今天是当年还剩多少天

再来看看今年还有多少天可以浪费~

123456789
function restOfYear(time) {    var nextyear = (time.getFullYear() + 1).toString();    var lastday = new Date(new Date(nextyear)-1); //获取本年的最后一毫秒:    console.log(lastday)    var diff = lastday - time;  //毫秒数    return Math.floor(diff / (1000 * 60 * 60 * 24));}restOfYear(new Data())//先取下一年第一秒,再减1毫秒。顺便思考一下为什么??是Math.ceil,??是Math.floor。

计算两个时间的间隔

可以拓展为倒计时、有效期等用途

12345678910111213141516171819202122232425262728293031
function diffTime(startDate,endDate,location) {    var diff=new Date(endDate).getTime() - startDate;//时间差的毫秒数

    //计算出相差天数    var days=Math.floor(diff/(24*3600*1000));

    //计算出小时数    var leave1=diff%(24*3600*1000);    //计算天数后剩余的毫秒数    var hours=Math.floor(leave1/(3600*1000));

    //计算相差分钟数    var leave2=leave1%(3600*1000);        //计算小时数后剩余的毫秒数    var minutes=Math.floor(leave2/(60*1000));

    //计算相差秒数    var leave3=leave2%(60*1000);      //计算分钟数后剩余的毫秒数    var seconds=Math.round(leave3/1000);    if(location === "Day") {       return returnStr = "还有" + days + "天";    }else if(location === "Hours") {       return returnStr = "还有" + (hours+days*24) + "小时";    }else if(location === "Minutes") {       return returnStr = "还有" + (minutes+(hours+days*24)*60) + "分钟";    }else if(location === "Seconds") {       return returnStr = "还有" + (seconds+(minutes+(hours+days*24)*60)*60) + "秒";    }else{        return returnStr = "还有" + days + "天" + hours + "小时" + minutes + "分钟" + seconds + "秒";    }}console.log(diffTime(new Date(), ‘2019-8-19 16:00:00‘,‘Minutes‘))//没有写的很复杂,方便各位修改拓展。

计算指定时间间隔前后的日期

可用于时间追溯、活动预告等用途

123456
function GetDate(time,count) {       time.setDate(time.getDate() + count);//获取N天后的日期      var date = new Date(+time + 8 * 3600 * 1000);        return date.toJSON().substr(0, 19).replace(‘T‘, ‘ ‘).replace(/-/g, ‘.‘);}  GetDate(new Date(),100)

计算当周开始和结束时间

很常见的需求,可用来做签到等

12345678910111213
function getwholetWeek(now){  var weekday = now.getDay();    // 获取当前是周几(周日:0)  weekday = weekday === 0 ? 7 : weekday;  var firstDay = GetDate(now,-weekday); //周日开始  var lastDay = GetDate(now,7 - 1); //周六结束  return {    firstDay: firstDay,    lastDay: lastDay  };}

console.log(getwholetWeek(new Date()))//调用前面日期间隔函数,可根据情况改成,周一开始,周日结束

来源:冰山工作室

原文地址:https://www.cnblogs.com/you-uncle/p/11820300.html

时间: 2024-10-22 08:56:20

js 时间常用处理方法的相关文章

js字符串常用的方法总结,及其用法

JS自带函数concat将两个或多个字符的文本组合起来,返回一个新的字符串.var a = "hello";var b = ",world";var c = a.concat(b);alert(c);//c = "hello,world"indexOf返回字符串中一个子串第一处出现的索引(从左到右搜索).如果没有匹配项,返回 -1 .var index1 = a.indexOf("l");//index1 = 2var ind

JS中常用的方法

Array new Set() 用来对数组进行去重. var arr = [1,2,3,3,4,5,5,5]; console.log(new Set(arr));//{1, 2, 3, 4, 5} const a = Array.from(new Set(arr));console.log(a);//[1, 2, 3, 4, 5] sort() 对数组元素进行排序(改变原数组) var aa = [1,3,4,2,5,7,9,6];console.log(aa.sort());//[1, 2,

js与jquery常用数组方法总结

转载:http://www.cnblogs.com/codetker/p/4676899.html 昨天被问数组方法的时候,问到sort()方法是否会改变原来的数组.本来我猜是不会,也是这么说,马上我又觉得,知识这种东西,不确定的时候直接说不确定或不知道就好,只是凭借着不确定的猜测或者是记忆,害人害己,于是我又回答不知道.结果果然...我记错了0.0 还是自己总结测试一下比较靠谱,印象也比较深刻.欢迎大家提出相关意见或建议,提前谢谢哈~ 一.原生js方法 1.遍历数组 in(同时也是对象遍历属性

数组方法总结 常用数组方法总结 js的数组或对象常用方法总结

js常用数据类型的方法使用归纳 * String---->是一个对象    * 字符串可以看成是字符组成的数组,但是js中没有字符类型 * 字符是一个一个的,在别的语言中字符用一对单引号括起来 * 在js中字符串可以使用单引号也可以使用双引号 * 因为字符串可以看成是数组,所以,可以通过for循环进行遍历 * 字符串特性:不可变性,字符串的值是不能改变 * 字符串的值之所以看起来是改变的,那是因为指向改变了,并不是真的值改变了 * 字符串的常用属性:     * .length------>字

图解js中常用的判断浏览器窗体、用户屏幕可视区域大小位置的方法

有时我们需要获得浏览器窗口或屏幕的大小.窗口下拉框下拉的距离等数据,对应这些需求,js中提供了不少解决方法,只是数量稍多容易混淆它们各自的意义,下面咱们用图例来解释下12个常见对象属性的作用. 其中有6个常用的浏览器窗体属性(由于offsetWidth/Height在不同浏览器下表现有出入,故不在本章讨论): document.documentElement.clientWidth document.documentElement.clientHeight document.documentEl

js中使用eval()方法将字符串转换成日期格式、并获取指定时间的日期

1.在js中eval()方法将字符串格式数据转换成日期格式 function getDate(strDate) {         //strDate为需要转换成日期格式的字符串         var date = eval('new Date(' + strDate.replace(/\d+(?=-[^-]+$)/,                 function (a) { return parseInt(a, 10) - 1; }).match(/\d+/g) + ')');    

JS中常用的几种时间格式处理-【笔记整理】

//此处整理点平时常用到的时间格式处理方法 ------------------------------------------- 1 //时间格式化函数 2 Date.prototype.format = function (format) { 3 var o = { 4 "M+": this.getMonth() + 1, //month 5 "d+": this.getDate(), //day 6 "h+": this.getHours(

jquery ajax中支持哪些返回类型以及js中判断一个类型常用的方法?

1 jquery ajax中支持哪些返回类型在JQuery中,AJAX有三种实现方式:$.ajax() , $.post , $.get(). 预期服务器返回的数据类型.如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断,比如 XML MIME 类型就被识别为 XML.在 1.4 中,JSON 就会生成一个 JavaScript 对象,而 script 则会执行这个脚本.随后服务器端返回的数据会根据这个值解析后,传递给回调 函数.可用值: •"xml": 返回

js字符串常用属性和方法

字符串声明: var str1 = new String(“abcdefgabc”);      //这是一个“字符串对象” var str2 = “abcdefgabc”;                            //这个字符串跟前面str1几乎没有区别 str.length——获得一个字符串的长度(也就是字符个数) 字符串对象的方法: str1.charAt( n );       ——获得字符串str1中位置为n的那个字符(字符的位置也是从0开始算起)var s1 = str