JavaScript日期集合(今日,昨日,本周一,周末 ,月初,月末)

vuxb2092 8年前發布 | 9K 次閱讀 JavaScript開發 JavaScript

來自: http://www.cnblogs.com/yangjunhua/p/5189014.html

閑聊: 新年第一天上班,看著自己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
};

}());</pre>

二、封裝為模塊,可用于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 = 10006060*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 };</pre>

總結: 代碼中就兩難點,一是獲取月末的最后一天日期,二是求 一周的開始和結束日期時間,第一點是知不知道的問題,第二點 是比較今日與周末(星期天),周一各差幾天,加減相差的時間戳獲取相應的日期,總之說難不難,說不難可能當你在百忙之中確實要花點時間,保持清醒的頭腦;

轉載請注明出處:博客園(楊君華的博客)

</div>

 本文由用戶 vuxb2092 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!