代码收藏系列--javascript--日期函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了代码收藏系列--javascript--日期函数相关的知识,希望对你有一定的参考价值。

/**
 * 将 Date 转化为指定格式的String 
 * 月(M)、日(d)、12小时(h)、24小时(H)、分(m)、秒(s)、周(E)、季度(q) 可以用 1-2 个占位符 
 * 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
 * @param Date date
 * @param string fmt
 * @returns string
 */
function formatDate(date, fmt) { //author: meizz 
    var o = {
        "M+": date.getMonth() + 1, //月份         
        "d+": date.getDate(), //
        "h+": date.getHours() % 12 == 0 ? 12 : date.getHours() % 12, //小时         
        "H+": date.getHours(), //小时         
        "m+": date.getMinutes(), //
        "s+": date.getSeconds(), //
        "q+": Math.floor((date.getMonth() + 3) / 3), //季度         
        "S": date.getMilliseconds() //毫秒         
    };
    var week = ["天", "一", "二", "三", "四", "五", "六"];
    if (/(y+)/.test(fmt)) {
        fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
    }
    if (/(E+)/.test(fmt)) {
        fmt = fmt.replace(RegExp.$1, ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? "星期" : "周") : "") + week[date.getDay() + ""]);
    }
    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;
}
// 示例
console.log(formatDate(new Date(), "yyyy-MM-dd hh:mm:ss.S")); // 2017-07-11 13:07:12
console.log(formatDate(new Date(), "yyyy-MM-dd HH:mm:ss")); // 2017-07-11 13:07:12
console.log(formatDate(new Date(), "yyyy-M-d h:m:s.S")); // 17-7-11 13:7:12
console.log(formatDate(new Date(), "yy-M-d H:m:s")); // 17-7-11 13:7:12
console.log(formatDate(new Date(), "yyyy-MM-dd E")); // 2017-07-11 13:07:12
console.log(formatDate(new Date(), "yyyy-MM-dd EE")); // 2017-07-11 13:07:12
console.log(formatDate(new Date(), "yyyy-MM-dd EEE")); // 2017-07-11 13:07:12

/**
 * 判断指定日期是一年中的第几周
 * @param Date date
 * @return integer
 */
function getWeekNumber(date) {
    var totalDays = 0;
    var years = date.getYear()
    if (years < 1000) {
        years += 1900;
    }
    var days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
    //判断是否为闰年,针对2月的天数进行计算
    if (Math.round(date.getYear() / 4) == date.getYear() / 4) {
        days[1] = 29
    }
    var curMonth = date.getMonth();
    totalDays = date.getDate();
    for (var i = 0; i < curMonth; i++) {
        totalDays += +days[i];
    }
    //那一年第一天是星期几
    var yearFirstDay = new Date(years, 0, 1).getDay() || 7;

    var week = null;
    if (yearFirstDay == 1) {
        week = Math.ceil(totalDays / yearFirstDay);
    } else {
        totalDays -= (7 - yearFirstDay + 1);
        week = Math.ceil(totalDays / 7) + 1;
    }
    return week;
}
// 示例
console.log(getWeekNumber(new Date())); //29
console.log(getWeekNumber(new Date(‘2017-01-01‘))); // 1
console.log(getWeekNumber(new Date(‘2017-12-31‘))); // 53
console.log(getWeekNumber(new Date(‘2000-05-08‘))); // 20

下载:[js_date_function_demo.zip]

 

版权声明:本文采用署名-非商业性使用-相同方式共享(CC BY-NC-SA 3.0 CN)国际许可协议进行许可,转载请注明作者及出处。
本文标题:代码收藏系列--javascript--日期函数
本文链接:http://www.cnblogs.com/sochishun/p/7150428.html
本文作者:SoChishun (邮箱:14507247#qq.com | 博客:http://www.cnblogs.com/sochishun/)
发表日期:2017年7月11日





以上是关于代码收藏系列--javascript--日期函数的主要内容,如果未能解决你的问题,请参考以下文章

使用 JavaScript 函数显示今天的约会/日期

JavaScript初探系列之日期对象

是否有在 JavaScript 中指定作者、日期或代码来源的约定?

javascript 日期 加减

如何在 onclick 函数中加上单引号?

雪花中的 Javascript 函数将表名附加到当前日期