代码收藏系列--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日

时间: 2024-10-28 19:38:54

代码收藏系列--javascript--日期函数的相关文章

代码收藏系列--mysql创建数据库、数据表、函数、存储过程命令

创建mysql数据库 CREATE DATABASE IF NOT EXISTS `database_name` DEFAULT CHARSET utf8 COLLATE utf8_general_ci; 创建mysql数据表 drop table if exists `table_name`; create table if not exists `table_name` ( id int auto_increment primary key comment '主键编号', `name` va

代码收藏系列--php--加载sql文件并解析成数组

php加载sql文件,解析成以分号分割的数组.(支持存储过程和函数提取,自动过滤注释) /** * 加载sql文件为分号分割的数组 * <br />支持存储过程和函数提取,自动过滤注释 * <br />例如: var_export(load_sql_file('mysql_routing_example/fn_cdr_parse_accountcode.sql')); * @param string $path 文件路径 * @return boolean|array * @sin

代码收藏系列--jquery--筛选器、事件绑定技巧

Jquery筛选器的一些常用技巧,比如过滤属性等 /* 过滤获取没有含data-xsui-grid-colspan的节点 */$(this).find('.xsui-grid-cell:not([data-xsui-grid-colspan])'); jQuery绑定input控件的回车事件 // input文本输入框按确定按键后,触发Tab按键,自动跳到下一个输入框 $('input[type="text"]').bind('keydown', function (e) { if (

代码收藏系列--javascript--移动端技巧

JS判断是否是手机端访问: var is_mobi = navigator.userAgent.toLowerCase().match(/(ipod|iphone|android|coolpad|mmp|smartphone|midp|wap|xoom|symbian|j2me|blackberry|wince)/i) != null; if (is_mobi) { window.location.href = "http://m.xxx.com"; } JS判断安卓浏览器.IOS浏览

Javascript日期函数使用需要注意地方

当我们需要获取未来某个时间的毫秒数时,可能第一时间想到的方法是 (new Date("2014-12-08 12:00:00")).getTime() 这个在方法在chrome下是会返回一个数字的. 但是在IE下返回的是一个NaN,是因为IE下认为 YYYY-mm-dd HH:ii:ss不是一个合理的日期格式 不过它倒是可以接受 YYYY-mm-dd这种格式 为了通用兼容,我们可以针对 YYYY-mm-dd HH:ii:ss 这种格式可以将每个单位的值分解,使用setXXXX方法来获得

Javascript 日期函数比较大小

1 // 日期比较函数 格式:yyyy-MM-dd 2 function dateCompare(startdate, enddate) { 3 var arr = startdate.split("-"); 4 var starttime = new Date(arr[0], arr[1], arr[2]); 5 var starttimes = starttime.getTime(); 6 7 var arrs = enddate.split("-"); 8 v

javascript 日期函数

获取当前日期的前一天的日期 ? ?var MyDate = new Date( ); ?//获取昨天的日期 ? ?var yesterday = myDate.getTime()-1000*60*60*24; ? ?var date = new Date(); ? ?date.setTime(yesterday); 获取当前时间 date.getYear+1900=date.getFullYear() date.getMonth()://获取系统月份,由于月份是从0开始计算,所以加1 date.

javascript之日期函数

javascript日期函数包括以下20个函数: (1)getDate函数:返回日期的"日"部分,值为1-31.例: function DateDemo() { var d, s = "Today's date is: "; d = new Date(); s += (d.getMonth() + 1) +"/"; s += d.getDate() +"/"; s += d.getYear(); return(s); } (2

【javascript】javascript常用函数大全

javascript函数一共可分为五类:   •常规函数   •数组函数   •日期函数   •数学函数   •字符串函数   1.常规函数   javascript常规函数包括以下9个函数:   (1)alert函数:显示一个警告对话框,包括一个OK按钮.   (2)confirm函数:显示一个确认对话框,包括OK.Cancel按钮.   (3)escape函数:将字符转换成Unicode码.   (4)eval函数:计算表达式的结果.   (5)isNaN函数:测试是(true)否(fals