js日期拓展方法

Posted 那时年少青衫薄。

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js日期拓展方法相关的知识,希望对你有一定的参考价值。

最近项目中使用了大量关于日期的操作遂将其整理如下:

/**
 * 格式化日期
 * @param {String} fmt [日期类型 默认为年月日(yyyy-MM-dd)]
 */
Date.prototype.format = function (fmt = ‘yyyy-MM-dd‘) {
    var date = {
        "y+": this.getFullYear(),
        "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 key in date) {
        if (new RegExp("(" + key + ")").test(fmt)) {
            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (date[key]) : (("00" + date[key]).substr(("" + date[key]).length)));
        }
    }
    return fmt;
}
/**
 * 返回带有时区的时间
 * @param {String} fmt [日期类型 默认为年月日(yyyy-MM-dd hh:mm:ss)]
 */
 Date.prototype.getUtcTime = function (format = ‘yyyy-MM-dd hh:mm:ss‘) {
    return this.format(format) + ‘GMT‘ + Math.abs(new Date().getTimezoneOffset() / 60) + ‘00‘
}
/**
* 获取当前月的最后一天
* @param {String} fmt [日期类型 默认为年月日(yyyy-MM-dd)]
*/
Date.prototype.getCurrentMonthLast = function (format = ‘yyyy-MM-dd‘) {
    var currentMonth = this.getMonth();
    var nextMonth = ++currentMonth;
    var nextMonthFirstDay = new Date(this.getFullYear(), nextMonth, 1);
    var oneDay = 1000 * 60 * 60 * 24;
    return new Date(nextMonthFirstDay - oneDay).format(format);
}
/**
* 获取当前月的第一天
* @param {String} fmt [日期类型 默认为年月日(yyyy-MM-dd)]
*/
Date.prototype.getCurrentMonthFirst = function (format = ‘yyyy-MM-dd‘) {
    return new Date(this.getFullYear(), this.getMonth(), 1).format(format);
}

 

以上是关于js日期拓展方法的主要内容,如果未能解决你的问题,请参考以下文章

JS最佳实践

常用python日期日志获取内容循环的代码片段

插件layDate----日期插件的使用

JavaScript获取当前日期时间及其它扩展操作(代码实现)

JS 2016-09-30T22:04:27.5220743+08:00 转换为日期

vscode代码片段建议bug