zoukankan      html  css  js  c++  java
  • 代码收藏系列--javascript--日期函数

    /**
     * 获取当前时间的简短函数
     * @returns {String}
     * @@example getTimeStamp() 结果是:2017-07-12 09:21:30
     */
    function getTimeStamp() {
        var date = new Date();
        var o = {y: date.getFullYear(), m: date.getMonth() + 1, d: date.getDate(), h: date.getHours(), i: date.getMinutes(), s: date.getSeconds()};
        var sout = o.y + "-" + (o.m < 10 ? '0' : '') + o.m + '-' + (o.d < 10 ? '0' : '') + o.d + ' ' + (o.h < 10 ? '0' : '') + o.h + ':' + (o.i < 10 ? '0' : '') + o.i + ':' + (o.s < 10 ? '0' : '') + o.s;
        return sout;
    }
    console.log(getTimeStamp());
    /**
     * 将 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日

  • 相关阅读:
    PHP操作二进制字节数据
    Linux端口转发-rinted工具部署、配置、使用
    Netty学习(八)-Netty的心跳机制
    Navicat Premium 12破解方法
    App界面设计规范-字体规范
    PHP 扩展开发之Zephir
    rinetd 一个linux下的端口转发工具
    windows node版本管理工具nvm
    vue cli 常见问题汇总
    监听微信返回
  • 原文地址:https://www.cnblogs.com/sochishun/p/7150428.html
Copyright © 2011-2022 走看看