js取任意时间,日期
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。o_0。
更新时间:
2020-09-21 21:26:28
温馨提示:
学无止境,技术类文章有它的时效性,请留意文章更新时间,如发现内容有误请留言指出,防止别人"踩坑",我会及时更新文章
如下:
取当前的日期
var curdate=new Date(); curdate.getYear(); //获取当前年份(2位) curdate.getFullYear(); //获取完整的年份(4位,1970-????) curdate.getMonth(); //获取当前月份(0-11,0代表1月) curdate.getDate(); //获取当前日(1-31) curdate.getDay(); //获取当前星期X(0-6,0代表星期天) curdate.getTime(); //获取当前时间(从1970.1.1开始的毫秒数) curdate.getHours(); //获取当前小时数(0-23) curdate.getMinutes(); //获取当前分钟数(0-59) curdate.getSeconds(); //获取当前秒数(0-59) curdate.getMilliseconds(); //获取当前毫秒数(0-999) curdate.toLocaleDateString(); //获取当前日期 var mytime=curdate.toLocaleTimeString(); //获取当前时间 curdate.toLocaleString( ); //获取日期与时间
实例化一个任意的日期对象
new Date("January 12,2006 22:19:35"); new Date("January 12,2006"); new Date(2006,0,12,22,19,35); new Date(2006,0,12); new Date(1137075575000);
上面实例化的都是2006年1月12日这一天,对应的时分秒,实例化后就可以使用上面的方法来取值
下面提供日期格式化函数,直接在原型上面扩展
// 对Date的扩展,将 Date 转化为指定格式的String // 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符, // 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字) // 例子: // (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423 // (new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18 Date.prototype.format = function(fmt) { var o = { "M+": this.getMonth() + 1, //月份 "d+": this.getDate(), //日 "h+": this.getHours(), //小时 "m+": this.getMinutes(), //分 "s+": this.getSeconds(), //秒 "q+": Math.floor((this.getMonth() + 3) / 3), //季度 "S": this.getMilliseconds() //毫秒 }; if (/(y+)/.test(fmt)) { fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); } for (var k in o) { if (new RegExp("(" + k + ")").test(fmt)) { fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); } } return fmt; };
输出如下图
取日期范围函数
/** * 返回日期字段串 * @param type 0:今天,1:本周,2:本月,3:上月,4:昨日,5:最近三日,6:最近7日,7:最近30天 * @param range * @returns {string} */ function getDateTime(type, range) { // 日期获取 var now = new Date(); //当前日期 var nowDayOfWeek = now.getDay() - 1; //今天本周的第几天 var nowDay = now.getDate(); //当前日 var nowMonth = now.getMonth(); //当前月 var nowYear = now.getFullYear(); //当前年 var lastMonthDate = new Date(); //上月日期 lastMonthDate.setDate(1); lastMonthDate.setMonth(lastMonthDate.getMonth() - 1); var lastYear = lastMonthDate.getFullYear(); var lastMonth = lastMonthDate.getMonth(); //获得某月的天数 function getMonthDays(myMonth) { var monthStartDate = new Date(nowYear, myMonth, 1); var monthEndDate = new Date(nowYear, myMonth + 1, 1); return (monthEndDate - monthStartDate) / (1000 * 60 * 60 * 24); } var daySart = new Date(new Date(new Date().toLocaleDateString()).getTime()) var dayEnd = new Date(new Date().toLocaleDateString()).getTime() + 24 * 60 * 60 * 1000 - 1 if (type === 0) { if (range) { return daySart.format("yyyy-MM-dd hh:mm:ss") + ' - ' + (new Date(dayEnd)).format("yyyy-MM-dd hh:mm:ss"); } else { return daySart.format("yyyy-MM-dd hh:mm:ss"); } } else if (type === 1) { var weekStartDate = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek); var weekEndDate = new Date(nowYear, nowMonth, nowDay + (6 - nowDayOfWeek), 23, 59, 59); if (range) { return weekStartDate.format("yyyy-MM-dd hh:mm:ss") + ' - ' + weekEndDate.format("yyyy-MM-dd hh:mm:ss"); } else { return weekStartDate.format("yyyy-MM-dd hh:mm:ss"); } } else if (type === 2) { var monthStartDate = new Date(nowYear, nowMonth, 1); var monthEndDate = new Date(nowYear, nowMonth, getMonthDays(nowMonth), 23, 59, 59); if (range) { return monthStartDate.format("yyyy-MM-dd hh:mm:ss") + ' - ' + monthEndDate.format("yyyy-MM-dd hh:mm:ss"); } else { return monthStartDate.format("yyyy-MM-dd hh:mm:ss"); } } else if (type === 3) { var lastMonthStartDate = new Date(nowYear, lastMonth, 1); var lastMonthEndDate = new Date(nowYear, lastMonth, getMonthDays(lastMonth), 23, 59, 59); if (range) { return lastMonthStartDate.format("yyyy-MM-dd hh:mm:ss") + ' - ' + lastMonthEndDate.format("yyyy-MM-dd hh:mm:ss"); } else { return lastMonthStartDate.format("yyyy-MM-dd hh:mm:ss"); } } else if (type === 4) { if (range) { return (new Date(dayEnd - 3600 * 24 * 1000 * 2 + 1)).format("yyyy-MM-dd hh:mm:ss") + ' - ' + (new Date(dayEnd - 3600 * 24 * 1000)).format("yyyy-MM-dd hh:mm:ss"); } else { return (new Date(dayEnd - 3600 * 24 * 1000 * 2 + 1)).format("yyyy-MM-dd hh:mm:ss"); } } else if (type === 5) { if (range) { return (new Date(dayEnd - 3600 * 24 * 1000 * 3 + 1)).format("yyyy-MM-dd hh:mm:ss") + ' - ' + (new Date(dayEnd)).format("yyyy-MM-dd hh:mm:ss"); } else { return (new Date(dayEnd - 3600 * 24 * 1000 * 3 + 1)).format("yyyy-MM-dd hh:mm:ss"); } } else if (type === 6) { if (range) { return (new Date(dayEnd - 3600 * 24 * 1000 * 7 + 1)).format("yyyy-MM-dd hh:mm:ss") + ' - ' + (new Date(dayEnd)).format("yyyy-MM-dd hh:mm:ss"); } else { return (new Date(dayEnd - 3600 * 24 * 1000 * 7 + 1)).format("yyyy-MM-dd hh:mm:ss"); } } else if (type === 7) { if (range) { return (new Date(dayEnd - 3600 * 24 * 1000 * 30 + 1)).format("yyyy-MM-dd hh:mm:ss") + ' - ' + (new Date(dayEnd)).format("yyyy-MM-dd hh:mm:ss"); } else { return (new Date(dayEnd - 3600 * 24 * 1000 * 30 + 1)).format("yyyy-MM-dd hh:mm:ss"); } } } console.log('今日',getDateTime(0,true)); console.log('本周',getDateTime(1,true)); console.log('本月',getDateTime(2,true)); console.log('上月',getDateTime(3,true)); console.log('昨日',getDateTime(4,true)); console.log('最近三天',getDateTime(5,true)); console.log('最近7天',getDateTime(6,true)); console.log('最近30天',getDateTime(7,true));