你的位置:首页 > Java教程

[Java教程]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};

总结:代码中就两难点,一是获取月末的最后一天日期,二是求 一周的开始和结束日期时间,第一点是知不知道的问题,第二点是比较今日与周末(星期天),周一各差几天,加减相差的时间戳获取相应的日期,总之说难不难,说不难可能当你在百忙之中确实要花点时间,保持清醒的头脑;

转载请注明出处:博客园(杨君华的博客)