js獲取日期及日期相關js方法 積累總結

js獲取日期

經常使用以下:html

var date = new Date();//中國標準時間
    var year = date.getFullYear();//獲取完整的年份(4位)
    var month = date.getMonth();//獲取當前月份(0-11,0表明1月)
    var nowDate = date.getDate();//獲取當前日(1-31)
    var day = date.getDay();//獲取當前星期X(0-6,0表明星期天)

更多請點擊JavaScript 標準庫 Date或相關參考的第一篇Js獲取當前日期時間及其它操做segmentfault

日期的相關方法

格式化日期

一、yyyy-MM-dd

//格式化日期:yyyy-MM-dd
function formatDate(date) {
    var myyear = date.getFullYear();
    var mymonth = date.getMonth() + 1;
    var myweekday = date.getDate();
 
    if (mymonth < 10) {
        mymonth = "0" + mymonth;
    }
    if (myweekday < 10) {
        myweekday = "0" + myweekday;
    }
    return (myyear + "-" + mymonth + "-" + myweekday);//想要什麼格式均可以隨便本身拼
}

var date = new Date();
//date
//Mon Jun 25 2018 15:32:38 GMT+0800 (中國標準時間)
formatDate(date);
//"2018-06-25"

或者 js標準時間格式化中@joy鈺的回答:this

function formatDate(dateArg) {
    const date = new Date(dateArg);
    const year = date.getFullYear();
    const month = date.getMonth() + 1;
    const day = date.getDate();
    const formatMonth = month < 10 ? `0${month}` : month;
    const formatDay = day < 10 ? `0${day}` : day;

    return `${year}-${formatMonth}-${formatDay}`
}

二、xx 年 xx 月 xx 日 xx 時 xx 分

//獲取當前日期 時間
function todayTime() {
        var date = new Date();
        var curYear = date.getFullYear();
        var curMonth = date.getMonth() + 1;
        var curDate = date.getDate();
        if(curMonth<10){
                curMonth = '0' + curMonth;
        }
        if(curDate<10){
                curDate = '0' + curDate;
        }    
        var curHours = date.getHours();
        var curMinutes = date.getMinutes();
        var curtime = curYear + ' 年 ' + curMonth + ' 月 ' + curDate +' 日' + curHours + '時 ' + curMinutes + '分 ';
        return curtime;
}

三、英文格式日期

//獲取當前日期 英文
function todayTimeEn() {
        var dt = new Date();
        var m = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
        mn = dt.getMonth();
        dn = dt.getDate();
        if(dn<10){
                dn = '0' + dn;
        }
        var curtime = m[mn] + " " + dn + ", " + dt.getFullYear();
        return curtime;
}

四、 自定義任意格式

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;
   }

使用方法:prototype

new Date().Format('yyyy-MM-dd hh:mm')
//console.log打印結果: "2019-08-22 16:42"

new Date().Format('yyyy.MM.dd hh:mm')
//console.log打印結果: "2019.08.22 16:44"

new Date().Format('yyyy-MM-dd')
//console.log打印結果:"2019-08-22"

周、月 相關的日期方法

一、一週 、本週

//近七天的日期
function setDate() {
            var now = new Date();
            //一天的毫秒數
            var millisecond = 1000 * 60 * 60 * 24;
            var end= new Date(now.getTime() - (7 * millisecond));
 
            var beginDate = formatDate(now);
            var endDate = formatDate(end);
            console.log("beginDate:"+beginDate);
            console.log("endDate :"+endDate );
 }
 
//本週日期 (取週一爲第一天、週日爲最後一天)
function weekDate() {
        var date = new Date();
        var year = date.getFullYear();
        var month = date.getMonth();
        var nowDate = date.getDate();
        var day = date.getDay();
        var beginDate = new Date(year, month, nowDate - day + 1);
        var endDate = new Date(year, month, nowDate + (6 - day) + 1);
        beginDate = formatDate(beginDate);
        endDate = formatDate(endDate);
        console.log("beginDate:"+beginDate);
        console.log("endDate :"+endDate );
    }

二、 月

//本月日期
    function monthDate() {
        var date = new Date();
        var year = date.getFullYear();
        var month = date.getMonth() + 1;
        if (month < 10) {
            month = "0" + month;
        }
        var day = getDaysInOneMonth(year, month);
        var beginDate = year + "-" + month + "-01";
        var endDate = year + "-" + month + "-" + day;
        console.log("beginDate:"+beginDate);
        console.log("endDate :"+endDate );
    }
 
    //獲取某月天數
    function getDaysInOneMonth(year, month) {
        month = parseInt(month, 10);
        var d = new Date(year, month, 0);
        return d.getDate();
    }

三、獲取前天、昨天、今天、明天、後天的時間

// 獲取AddDayCount天后的日期,例如 前天GetDateStr(-2)、昨天GetDateStr(-1)、今天GetDateStr(0)、明天GetDateStr(1)、後天GetDateStr(3)的日期
function GetDateStr(AddDayCount) {
    var dd = new Date();
    dd.setDate(dd.getDate()+AddDayCount);//獲取AddDayCount天后的日期
    var y = dd.getFullYear();
    var m = dd.getMonth()+1;//獲取當前月份的日期
    var d = dd.getDate();
    return y+"-"+m+"-"+d;
}
console.log("前天:"+GetDateStr(-2));
console.log("昨天:"+GetDateStr(-1));
console.log("今天:"+GetDateStr(0));
console.log("明天:"+GetDateStr(1));
console.log("後天:"+GetDateStr(2));
console.log("大後天:"+GetDateStr(3));

上述方法,稍加修改,便可完成以下:code

四、獲取某個日期date的前天、昨天、今天、明天、後天的日期

// 獲取該date日期AddDayCount天后的日期
function GetDateCountStr(date, AddDayCount) {
    let dd = new Date(date);
    dd.setDate(dd.getDate() + AddDayCount);// 獲取AddDayCount天后的日期
    let year = dd.getFullYear();
    let month = dd.getMonth() + 1;// 獲取當前月份的日期
    let day = dd.getDate();

    if (month < 10) {
        month = '0' + month;
    }
    if (day < 10) {
        day = '0' + day;
    }
    return (year + '-' + month + '-' + day);
}

使用:
例如
date的前天GetDateCountStr(date, -2)
date的昨天GetDateCountStr(date, -1)
date的今天GetDateCountStr(date,0)
date的明天GetDateCountStr(date,1)
date的後天GetDateCountStr(date,2)orm

五、獲取起始時間算起第n周的日期

function weeks_enddate(startdate,n){
    var date = new Date(startdate);
    date.setTime(date.getTime() + 3600 * 1000 * 24 * 7 * n);//第n周,一、二、三、4.....
    return formatDate(date);
}

//示例:
var startdate = '2018-06-27';//或者 var startdate= new Date()這樣寫也行的
var week_num = 2;//n是從1開始的整數便可
var enddate = weeks_enddate(startdate,week_num);
console.log("enddate :"+enddate );
//enddate :2018-07-11

上述方法,稍加修改,便可完成以下:htm

以週一爲一週的第一天算,獲取以開始日期所在周爲第一週算起的第n週週日的日期

//以週一爲一週的第一天算,獲取以開始日期所在周爲第一週算起的第n週週日的日期
function weeks_enddate(startdate,n){//startdate爲開始日期,第n周
    var date = new Date(startdate);
    var year = date.getFullYear();
    var month = date.getMonth();
    var nowDate = date.getDate();
    var day = date.getDay();
    if(day > 0){
        date = new Date(year, month, nowDate + (6 - day) + 1);
    }    
    date.setTime(date.getTime() + 3600 * 1000 * 24 * 7 * (n-1));//第n周
    return formatDate(date);
}

//示例:
var startdate = '2018-08-10'; 
var n = 3;//第3周
weeks_enddate(startdate,n);//執行結果爲"2018-08-26",以開始日期所在周算爲第一週獲取第三週週日的日期

//示例:
var startdate = '2018-08-10'; 
var n = 0;
weeks_enddate(startdate,n);//執行結果爲"2018-08-05",上週日的日期

//示例:
var startdate = '2018-08-10'; 
var n = -1;
weeks_enddate(startdate,n);//執行結果爲"2018-07-29",上上週日的日期

利用上述方法,靈活運用,便可獲任意日期所在周的一週的日期

function weekyCalendar(date) {
    var dateFlag = weeksEndDate(date, 1); // 獲取當前日期的下一個週日的日期
    if (dateFlag == date) {
        // 直接獲取到當前date以前的七天
        var daySun = GetDateCountStr(date, 0);
        var daySat = GetDateCountStr(date, 1);
        var dayFri = GetDateCountStr(date, 2);
        var dayThur = GetDateCountStr(date, 3);
        var dayWed = GetDateCountStr(date, 4);
        var dayTues = GetDateCountStr(date, 5);
        var dayMon = GetDateCountStr(date, 6);
        var days = [daySun, daySat, dayFri, dayThur, dayWed, dayTues, dayMon];
    } else {
        // 獲取到dateFlag這個週日一週前的七天日期
        var daySun = GetDateCountStr(dateFlag, -7);
        var daySat = GetDateCountStr(dateFlag, -6);
        var dayFri = GetDateCountStr(dateFlag, -5);
        var dayThur = GetDateCountStr(dateFlag, -4);
        var dayWed = GetDateCountStr(dateFlag, -3);
        var dayTues = GetDateCountStr(dateFlag, -2);
        var dayMon = GetDateCountStr(dateFlag, -1);
        var days = [daySun, daySat, dayFri, dayThur, dayWed, dayTues, dayMon];
    }
    return days;
    
}

示例:blog

var dates = weekyCalendar('2019-08-30');
console.log(dates);
//(7) ["2019-08-25", "2019-08-26", "2019-08-27", "2019-08-28", "2019-08-29", "2019-08-30", "2019-08-31"]

var dates = weekyCalendar('2019-08-25');
console.log(dates);
//(7) ["2019-08-25", "2019-08-26", "2019-08-27", "2019-08-28", "2019-08-29", "2019-08-30", "2019-08-31"]

相關參考

Js獲取當前日期時間及其它操做
js將日期轉換爲英文格式
js 獲取前天、昨天、今天、明天、後天的時間ip

相關文章
相關標籤/搜索