/**
* 时间操作工具类
*
* @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. Scala_特质

    特质 特质概述 Java中提供了接口,允许一个类实现任意数量的接口 在Scala中没有接口的概念,而是提供了“特质(trait) ”,它不仅实 现了接口的功能,还具备了很多其他的特性 Scala的特质 ...

  2. shell工具-cut

    cut cut的工作就是“剪”,具体说就是在文件中负责剪切数据用的.cut命令从文件的每一行剪切字节.字符.和字段并将这些字节.字符和字段输出 基本用法 cut [参数] filename # 说明: ...

  3. Javascript 对象创建多种方式 原型链

    一.对象创建 1.new Object 方式 直接赋上属性和方法 var obj = new Object(); obj.name = '娃娃'; obj.showName = function(){ ...

  4. SQL关闭自增长列标识:SET IDENTITY_INSERT

    关闭自增长列添加记录,然后再恢复自增长功能 SET IDENTITY_INSERT 表名 ON; inert ,); SET IDENTITY_INSERT 表名 OFF

  5. Git安装学习记录

    1.下载: https://gitforwindows.org/ 2.安装:https://blog.csdn.net/chengyuqiang/article/details/54178683 3. ...

  6. WCF接口实例介绍

    Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台. WCF整合了原有的windows通讯 ...

  7. 「雅礼集训 2017 Day2」解题报告

    「雅礼集训 2017 Day2」水箱 我怎么知道这种题目都能构造树形结构. 根据高度构造一棵树,在树上倍增找到最大的小于约束条件高度的隔板,开一个 \(vector\) 记录一下,然后对于每个 \(v ...

  8. Spring中使用StandardServletMultipartResolver进行文件上传

    从Spring3.1开始,Spring提供了两个MultipartResolver的实现用于处理multipart请求,分别是:CommonsMultipartResolver和StandardSer ...

  9. 设置 Linux 下打印机的几种方式

    设置 Linux 下打印机的几种方式 一.使用 cups 进行设置 如若遇到 cups 也没有驱动的话可以前往 openprinting.org 找寻对应驱动. 二.前往 official 下载驱动 ...

  10. 优化openfire服务器提升xmpp 效率的15个方法(原创)

    1.禁用原生xmpp搜索,使组织架构.人员数据本地化保存,并使客户端数据同步服务器,降低原生xmpp搜索的iq消耗,因为搜索是im应用的频繁操作: 2.禁用roster花名册.禁用presence包通 ...