/**
* 时间操作工具类
*
* @author zwq
*
*/
var TimeFrameUtil = {
/**
* 格式化日期
* @param date {Date} 日期
* @param pattern {string} 格式,例:"yyyy-MM-dd HH:mm:ss"
* @returns {String} 返回格式化后的日期,如:"2018-01-22 18:04:30"
*/
format : function (date, pattern) {
var time = {
"M+": date.getMonth() + 1,
"d+": date.getDate(),
"H+": date.getHours(),
"m+": date.getMinutes(),
"s+": date.getSeconds(),
"q+": Math.floor((date.getMonth() + 3) / 3),
"S+": date.getMilliseconds()
};
if (/(y+)/i.test(pattern)) {
pattern = pattern.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
}
for (var k in time) {
if (new RegExp("(" + k + ")").test(pattern)) {
pattern = pattern.replace(RegExp.$1, RegExp.$1.length == 1 ? time[k] : ("00" + time[k]).substr(("" + time[k]).length));
}
}
return pattern;
},
/**
* 将指定时间偏移几小时
* @param time {String} 指定时间,例:"2018-01-24 17:00"
* @param offset {Number} 偏移量,正数代表加几小时,负数代表减几小时,例:1
* @param pattern {String} 返回时间的格式,例:"yyyy-MM-dd HH:mm"
* @returns {String} 返回计算后的时间,如:"2018-01-24 18:00"
*/
offsetHours : function (time, offset, pattern) {
var date = new Date(Date.parse(time));
var yyyy = date.getFullYear();
var MM = date.getMonth();
var dd = date.getDate();
var HH = date.getHours() + offset;
var mm = date.getMinutes();
var ss = date.getSeconds();
return this.format(new Date(yyyy, MM, dd, HH, mm, ss), pattern);
},
/**
* 将指定月份偏移几个月
* @param month {String} 指定月份,例:"2018-01"
* @param offset {Number} 偏移量,负数代表上几个月,正数代表下几个月,例:1
* @returns {String} 返回计算后的月份,如:"2018-02"
*/
offsetMonths : function (month, offset) {
var date = new Date(Date.parse(month));
var year = date.getFullYear();
var month = date.getMonth();
var preOrNextMonth = month + offset;
return this.format(new Date(year, preOrNextMonth), "yyyy-MM");
},
/**
* 获取指定日期是星期几
* @param date {String} 指定日期,例:"2018-01-23"
* @returns {Number} 返回星期几(1-7),如:2
*/
dayOfWeek : function (date) {
var time = new Date(Date.parse(date));
var weekday=new Array(7);
weekday[0]= 7;
weekday[1]= 1;
weekday[2]= 2;
weekday[3]= 3;
weekday[4]= 4;
weekday[5]= 5;
weekday[6]= 6;
return weekday[time.getDay()];
},
/**
* 获取指定月份有多少天
* @param month {String} 指定月份:例"2018-01"
* @returns {number} 返回指定月份有多少天,如:31
*/
daysInMonth : function (month) {
var date = new Date(Date.parse(month));
var year = date.getFullYear();
var month = date.getMonth();
if (month == 1) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
return 29;
else
return 28;
} else if ((month <= 6 && month % 2 == 0) || (month > 6 && month % 2 == 1))
return 31;
else
return 30;
}
};

  

JavaScript时间操作工具类的更多相关文章

  1. java/javascript 时间操作工具类

    一.java 时间操作工具类 import org.springframework.util.StringUtils; import java.text.ParseException; import ...

  2. JavaScript时间工具类

    /** * JavaScript日期工具类 * @author ZhangLp */ /** * 获取当前月的第一天 */ function getCurrentMonthFirst(){ var d ...

  3. java时间操作工具类

    import java.sql.Timestamp;import java.text.DateFormat;import java.text.ParseException;import java.te ...

  4. 第一百零四节,JavaScript时间与日期

    JavaScript时间与日期 学习要点: 1.Date类型 2.通用的方法 3.格式化方法 4.组件方法 ECMAScript提供了Date类型来处理时间和日期.Date类型内置一系列获取和设置日期 ...

  5. 【转载】ASP.NET工具类:文件夹目录Directory操作工具类

    在ASP.NET开发网站的过程中,有时候会涉及到文件夹相关操作,如判断文件夹目录是否存在.删除文件夹目录.创建文件.删除文件.复制文件夹等等.这一批有关文件目录的操作可以通过Directory类.Fi ...

  6. javascript常用工具类整理(copy)

    JavaScript常用工具类 类型 日期 数组 字符串 数字 网络请求 节点 存储 其他 1.类型 isString (o) { //是否字符串 return Object.prototype.to ...

  7. 基于jquery的提示框JavaScript 插件,类Bootstrap

    目录 基于jquery的提示框JavaScript 插件,类Bootstrap 基于jquery的提示框JavaScript 插件,类Bootstrap 源码 github地址: https://gi ...

  8. 玩转JavaScript OOP[2]——类的实现

    概述 当我们在谈论面向对象编程时,我们在谈论什么?我们首先谈论的是一些概念:对象.类.封装.继承.多态.对象和类是面向对象的基础,封装.继承和多态是面向对象编程的三大特性. JavaScript提供了 ...

  9. javascript基础知识-类和模块

    在JavaScript中可以定义对象的类,让每个对象都共享这些属性. 在JavaScript中,类的实现是基于其原型继承机制的.如果两个实例都从同一个原型对象上继承了属性,我们就说它们是同一个类的实例 ...

随机推荐

  1. 学习stm32 让我们一起回顾一下C语言吧

    ODR 是一个端口输出数据寄存器,也只用了低 16 位.该寄存器为可读写,从该寄存器读出来的数据可以用于判断当前 IO 口的输出状态.而向该寄存器写数据,则可以控制某个 IO 口的输出电平.该寄存器的 ...

  2. CSS 基础 例子 背景色 & 背景图片

    背景简写形式 : body {background:#ffffff url('img_tree.png') no-repeat right top;} 一.背景色  background-color ...

  3. WinForm企业级框架实战项目演练

    一.课程介绍 我们都知道在软件架构方式分为:C/S和B/S两类.这里阿笨不谈论两种软件架构的优劣之分,因为它们各有千秋,用于不同场合.一位伟大的讲师曾经说过一句话:事物存在即合理!录制这堂课程的目的就 ...

  4. MVC框架json数据展示程序(第一版)

    模型原型:服务器的配置和运行状态信息. 设计要求:Json格式数据解析后,判断配置信息是否是新数据或者是否更新.如是新数据,则直接添加到数据库:若是数据更新,则更新数据库配置信息并更新运行状态信息:都 ...

  5. 常用Java集合类总结

    此文已由作者赵计刚授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 7.1.List(允许重复元素) ArrayList: 底层数据结构:Object[] 在查询(get).遍 ...

  6. 【BZOJ3097】 Hash Killer I

    BZOJ3097 Hash Killer I Solution 考虑它是自然溢出,相当于就是对\(2^{63}\)取膜 那么就有\(aaaaa...aaa\)(多于64个)和\(baaaa...aaa ...

  7. C/C++掌握技能(二)

    多组输入:

  8. 读配置文件property文件

    import java.io.IOException;import java.util.Properties; import org.springframework.core.io.support.P ...

  9. dell 远程管理卡的使用racadm

    尊重作者的劳动,转载请注明作者及原文地址 http://www.cnblogs.com/txwsqk/p/6522854.html 可以直接在浏览器输入管理卡的地址-用户名-密码页面操作 也可以通过命 ...

  10. [HTML] SCSS 备忘录

    Sass是成熟.稳定.强大的CSS预处理器,而SCSS是Sass3版本当中引入的新语法特性,完全兼容CSS3的同时继承了Sass强大的动态功能. 特性概览 CSS书写代码规模较大的Web应用时,容易造 ...