js获取日期及日期相关js方法 积累总结

js获取日期

常用如下:

    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获取当前日期时间及其它操作。

日期的相关方法

格式化日期

1、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钰的回答:

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

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

3、英文格式日期

//获取当前日期 英文
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;
}

4、 自定义任意格式

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

使用方法:

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"

周、月 相关的日期方法

1、一周 、本周

//近七天的日期
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 );
    }
 

2、 月


    //本月日期
    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();
    }

3、获取前天、昨天、今天、明天、后天的时间

// 获取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));

上述方法,稍加修改,即可完成如下:

4、获取某个日期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,3)

5、获取起始时间算起第n周的日期

function weeks_enddate(startdate,n){
    var date = new Date(startdate);
    date.setTime(date.getTime() + 3600 * 1000 * 24 * 7 * n);//第n周,1、2、3、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

上述方法,稍加修改,即可完成如下:

以周一为一周的第一天算,获取以开始日期所在周为第一周算起的第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;
    
}

示例:

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 获取前天、昨天、今天、明天、后天的时间

你可能感兴趣的:(javascript,date)