javascript日期时间的格式化

Javascript 2019-12-08 阅读 222 评论 0

习惯了使用java的SimpleDateFormat 和 php 的 date ,总感觉javascript缺少这种类似的方法。下面介绍一个用js写的简单格式化Date为字符串方法。

主要使用了js 的 replace,正则匹配的标志,用 g,代表全局匹配,即找到所有匹配,而不是在第一个匹配后停止。

/**
 * 格式化时间
 * @param  date   Date对象
 * @param  format 格式化字符串:y - 年份。yy 表示两位年份,yyyy 表示 4 位年份 
 *                           M - 月份。M 表示月份(1-12),MM 表示2位数的月份,不足2位数,第一位补0
 *                           d - 月份中的天数。d 表示天数(1-31),dd 表示天数
 *                           H - 一天中的小时数0~23)。H 表示小时数, HH 表示2位的小时数,不足2位数,第一位补0
 *                           m - 分钟数。用 m 表示分钟数(0-59),mm 表示2位的分钟数,不足2位数,第一位补0
 *                           s - 秒数。用 s 表示秒数(0-59),ss 表示2位数的秒数,不足2位数,第一位补0
 *                           
 * @return 返回格式化后的字符串
 */
function formatDate (date, format) {
    if (date == null) {
        return "";
    }
    var pad = function(n) {
        return n < 10 ? '0' + n : n;
    }
    var year = date.getFullYear();
    var yearShort = year.toString().substring(2);
    var month = date.getMonth() + 1;
    var monthPad = pad(month);
    var dateInMonth = date.getDate();
    var dateInMonthPad = pad(dateInMonth);
    var hour = date.getHours();
    var hourPad = pad(hour);
    var minute = date.getMinutes();
    var minutePad = pad(minute);
    var second = date.getSeconds();
    var secondPad = pad(second);
    return format.replace(/yyyy/g, year).replace(/yy/g, yearShort)
                .replace(/MM/g, monthPad).replace(/M/g, month)
                .replace(/dd/g, dateInMonthPad).replace(/d/g, dateInMonth)
                .replace(/HH/g, hourPad).replace(/H/g, hour)
                .replace(/mm/g, minutePad).replace(/m/g, minute)
                .replace(/ss/g, secondPad).replace(/s/g, second);
}

示例

formatDate(new Date(), "yyyy-MM-dd HH:mm:ss");
// 2019-12-08 21:53:35

亲自试一试:Demo

最后更新 2019-12-08