JavaScript日期集合(今日,昨日,本周一,周末 ,月初,月末)
闲聊:新年第一天上班,看着自己15年年底写的代码,真心觉得很烂,因为年底没时间去写,一想着做后台管理需要获取一周的开始和结束日期,就慌了,项目赶着测试呢,还有好多事情未做,就直接抄袭了网上的一段错误代码,其实真的很简单,今天重新花点时间封装一下,以备后用,大神勿喷,谢谢!
一、封装为jQuery版日期集合插件
jQuery.dateCollections = (function(){
    var nowDate = new Date();
    var cloneNowDate = new Date();
    var fullYear = nowDate.getFullYear();
    var month = nowDate.getMonth() + 1; // getMonth 方法返回 0-11,代表1-12月
    var date = nowDate.getDate();
    var endOfMonth = new Date(fullYear, month, 0).getDate(); // 获取本月最后一天
    // 格式化日期 (2016-02-14)
    function getFullDate(targetDate) {
        var D, y, m, d;
        if (targetDate) {
            D = new Date(targetDate);
            y = D.getFullYear();
            m = D.getMonth() + 1;
            d = D.getDate();
        } else {
            y = fullYear;
            m = month;
            d = date;
        }
        m = m > 9 ? m : '0' + m;
        d = d > 9 ? d : '0' + d;
        return y + '-' + m + '-' + d;
    }
    // 一天的时间戳(毫秒为单位)
    var timestampOfDay = 1000*60*60*24;
    // 今天,昨天
    var fullToday = getFullDate();
    var fullYesterday = getFullDate(nowDate - timestampOfDay);
    var nowDay = nowDate.getDay(); // getDay 方法返回0 表示星期天
    nowDay = nowDay === 0 ? 7 : nowDay;
    // 本周一,本周末(星期天)
    // 注:在safari下(nowDate +- 0)不会转换为时间戳,这里在nowDate前加上运算符+,手动转换时间戳运算
    var fullMonday = getFullDate( +nowDate - (nowDay-1)*timestampOfDay );
    var fullSunday = getFullDate( +nowDate + (7-nowDay)*timestampOfDay );
    // 月初,月末
    var fullStartOfMonth = getFullDate( cloneNowDate.setDate(1) );
    var fullEndOfMonth = getFullDate( cloneNowDate.setDate(endOfMonth) );
    return {
        fullToday: fullToday,
        fullYesterday: fullYesterday,
        fullMonday: fullMonday,
        fullSunday: fullSunday,
        fullStartOfMonth: fullStartOfMonth,
        fullEndOfMonth: fullEndOfMonth
    };
}());
二、封装为模块,可用于webpack工具打包
var nowDate = new Date();
var cloneNowDate = new Date(); var fullYear = nowDate.getFullYear();
var month = nowDate.getMonth() + 1; // getMonth 方法返回 0-11,代表1-12月
var date = nowDate.getDate(); var endOfMonth = new Date(fullYear, month, 0).getDate(); // 获取本月最后一天 // 格式化日期 (2016-02-14)
function getFullDate(targetDate) {
var D, y, m, d;
if (targetDate) {
D = new Date(targetDate);
y = D.getFullYear();
m = D.getMonth() + 1;
d = D.getDate();
} else {
y = fullYear;
m = month;
d = date;
}
m = m > 9 ? m : '0' + m;
d = d > 9 ? d : '0' + d; return y + '-' + m + '-' + d;
} // 一天的时间戳(毫秒为单位)
var timestampOfDay = 1000*60*60*24; // 今天,昨天
var fullToday = getFullDate();
var fullYesterday = getFullDate(nowDate - timestampOfDay); var nowDay = nowDate.getDay(); // getDay 方法返回0 表示星期天
nowDay = nowDay === 0 ? 7 : nowDay; // 本周一,本周末(星期天)
// 注:在safari下(nowDate +- 0)不会转换为时间戳,这里在nowDate前加上运算符+,手动转换时间戳运算
var fullMonday = getFullDate( +nowDate - (nowDay-1)*timestampOfDay );
var fullSunday = getFullDate( +nowDate + (7-nowDay)*timestampOfDay ); // 月初,月末
var fullStartOfMonth = getFullDate( cloneNowDate.setDate(1) );
var fullEndOfMonth = getFullDate( cloneNowDate.setDate(endOfMonth) ); module.exports = {
fullToday: fullToday,
fullYesterday: fullYesterday,
fullMonday: fullMonday,
fullSunday: fullSunday,
fullStartOfMonth: fullStartOfMonth,
fullEndOfMonth: fullEndOfMonth
};
总结:代码中就两难点,一是获取月末的最后一天日期,二是求 一周的开始和结束日期时间,第一点是知不知道的问题,第二点是比较今日与周末(星期天),周一各差几天,加减相差的时间戳获取相应的日期,总之说难不难,说不难可能当你在百忙之中确实要花点时间,保持清醒的头脑;
转载请注明出处:博客园(杨君华的博客)
JavaScript日期集合(今日,昨日,本周一,周末 ,月初,月末)的更多相关文章
- vue项目中使用日期获取今日,昨日,上周,下周,上个月,下个月的数据
		今日公司项目接口要求获取动态的上周数据,经过不断的寻找,找到此方法. 该方法使用的是Moment.js JavaScript日期处理类库 一:安装依赖 npm install moment --sav ... 
- Moment.js 超棒Javascript日期处理类库
		Moment.js 不容错过的超棒Javascript日期处理类库 主要特性: 3.2kb超轻量级 独立类库,意味这你不需要倒入一堆js 日期处理支持UNIX 时间戳,String,指定格式的Date ... 
- JavaScript日期对象使用总结
		javascript Date日期对象的创建 创建一个日期对象: var objDate=new Date([arguments list]); 我总结了参数形式主要有以下3种: new Date(& ... 
- JavaScript常见集合操作
		JavaScript常见集合操作 集合的遍历 FOR循环(效率最高) 优点:JavaScript最普遍的for循环,执行效率最高 缺点:无法遍历对象 for(let i=0;i<array.le ... 
- javascript 日期月份加减
		项目中需要用到,自己写了一个.javascript日期按月加减 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xh ... 
- JavaScript日期时间格式化函数
		这篇文章主要介绍了JavaScript日期时间格式化函数分享,需要的朋友可以参考下 这个函数经常用到,分享给大家. 函数代码: //格式化参数说明: //y:年,M:月,d:日,h:时,m分,s:秒, ... 
- JavaScript 日期格式化 简单有用
		JavaScript 日期格式化 简单有用 代码例如以下,引入jquery后直接后增加下面代码刷新可測试 Date.prototype.Format = function (fmt) { //auth ... 
- Javascript 日期格式化
		Javascript 日期格式化 需求: 给出:日期 .格式,根据日期格式进行输出. Date.prototype.Format = function (fmt) { //author: meizz ... 
- [Javascript] 5个最佳的Javascript日期处理类库
		在大家日常网站开发和web应用开发中,我们往往需要有效的调用Javascript处理日期和时间格式相关的函数,在Javascript中已经包含了部分最基本的内建处理方法. 在大家日常网站开发和web应 ... 
随机推荐
- springMVC-错误消息的显示和国际化
			显示:在页面添加<form:errors path="*">会把错误消息集中显示在一块 在页面添加<form:errors path="lastname ... 
- 【codevs1743】 反转卡片
			http://codevs.cn/problem/1743/ (题目链接) 题意 给出一个序列{a1,a2,a3···},要求维护这样一种操作:将前a1个数反转,若第a1等于1,则停止操作. Solu ... 
- js 日报 周报 月报  时间扩展 js
			当初做统计业务需要处理时间 周报:本周 上周 下周 近一周 月报上月 本月 等 需要使用时间处理 所以扩展了这些方法 <!DOCTYPE html> <html xmlns=&quo ... 
- SQL Server配置管理器的“别名”功能好处,实现内外网统一以及加了端口号导致的限制
			这里主要有两个别名,经过研究,最好两个都配置成一样的,减少排查. 操作: 点击[别名],右键[新建别名] 这里的别名能实现比如我一台远程服务器,加了端口的,如果要实现在SQL登录的时候,使用计算机名来 ... 
- SPOJ GSS5 Can you answer these queries V
			Time Limit: 132MS Memory Limit: 1572864KB 64bit IO Format: %lld & %llu Description You are g ... 
- [NOIP2013] 提高组 洛谷P1970 花匠
			题目描述 花匠栋栋种了一排花,每株花都有自己的高度.花儿越长越大,也越来越挤.栋栋决定 把这排中的一部分花移走,将剩下的留在原地,使得剩下的花能有空间长大,同时,栋栋希 望剩下的花排列得比较别致. 具 ... 
- Servlet —— 避免Servlet的并发同步问题
			Servlet的生命周期是由Servlet容器来负责的. Servlet容器通常采用单实例多线程的方式,减少Servlet创建实例的开销,提高效率. 当客户端第一次请求某个Servlet时,Servl ... 
- ( 译、持续更新 ) JavaScript 上分小技巧(二)
			考虑到文章过长,不便于阅读,这里分出第二篇,如有后续,每15个知识点分为一篇... 第一篇地址:( 译.持续更新 ) JavaScript 上分小技巧(一) 第三篇地址:( 译.持续更新 ) Java ... 
- AngularJs $interval 和 $timeout
			$interval window.setInterval的Angular包装形式.Fn是每次延迟时间后被执行的函数. 间隔函数的返回值是一个承诺.这个承诺将在每个间隔刻度被通知,并且到达规定迭代次数后 ... 
- Python基本数据类型之list
			一.创建列表: li = [] li = list() name_list = ['alex', 'seven', 'eric'] name_list = list(['alex', 'seven', ... 
