/**
* 时间操作工具类
*
* @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. 转载:$(function() {}),即$(document).ready(function(),什么时候执行?以此为准,真理

    转载:https://blog.csdn.net/Ideality_hunter/article/details/77935656 $(function() { //执行操作 }); $(functi ...

  2. POJ1644状态转移的思想——排列组合

    m个物品放n个盒子,盒子物品都相同,问你放的方法总数是多少 看着像个排列组合,算着算着就发现我排列组合都忘得差不多啦,哎,什么时候能打败遗忘呢 然后想用dp做,但是转移的方面没有想好 看了看题解感觉这 ...

  3. [译]C#和.NET中的字符串

    原文地址:Jon Skeet:Strings in C# and .NET System.String 类型(在C#语言中对应的别名是string)是.NET最重要的类型之一,不幸的是在它身上存在了太 ...

  4. 为什么在UDP包中不能获取发包方的地址

    首先,我们要先了解一下UDP包的结构. 图1 UDP报文格式 从图1,我们可以看出,从UDP包中,我们可以获取的信息只有源端口和目的地端口.我们不能获取到源IP因为报文中没有源IP.真正包含IP地址的 ...

  5. OpenvSwitch端口镜像

    OVS上实现端口镜像的基本流程如下: 创建 mirror ,在 mirror 中指定镜像数据源及镜像目的地 将创建的 mirror 应用到 bridge 中 镜像数据源可以通过下面几个选项来指定: s ...

  6. C++获取本机IP地址信息

    #include<winsock2.h> #include<iostream> #include<string> using namespace std; #pra ...

  7. CE修改器使用教程 [基础篇]

    Cheat Engine  是一款内存修改编辑工具 ,它允许你修改你的游戏或软件内存数据,以得到一些其他功能.它包括16进制编辑,反汇编程序,内存查找工具.与同类修改工具相比,它具有强大的反汇编功能, ...

  8. 一次对路边饮用水RFID供应机的跑路玩法

    "如何成为一个合格的硬件白帽子? 答案: 一个有聪明大脑的你 要有归纳类比和善于用GOOGLE的能力(百度?放弃吧) 善于翻阅和查询相关开发文档和强大的跑路能力." WARNING ...

  9. Tools - 浏览器Firefox

    简介 http://www.mozilla.org/ 中文官网:http://www.firefox.com.cn/ https://www.mozilla.org/zh-CN/firefox/ Mo ...

  10. 5_Python OOP

    1. 实例属性和类属性        (1) 实例属性在构造函数__init__中定义,定义时以self作为前缀,只能通过实例名访问        (2) 类属性在类中方法之外单独定义,还可以在程序中 ...