/**
* JavaScript日期工具类
* @author ZhangLp
*/ /**
* 获取当前月的第一天
*/
function getCurrentMonthFirst(){
var date=new Date();
date.setDate(1);
return date;
}
/**
* 获取当前月的最后一天
*/
function getCurrentMonthLast(){
var date=new Date();
var currentMonth=date.getMonth();
var nextMonth=++currentMonth;
var nextMonthFirstDay=new Date(date.getFullYear(),nextMonth,1);
var oneDay=1000*60*60*24;
return new Date(nextMonthFirstDay-oneDay);
}
/**
* 获取上个月的第一天
*/
function lastMonthFirst(){
return new Date(getCurrentMonthFirst().setMonth(getCurrentMonthFirst().getMonth()-1));
}
/**
* 获取上个月最后一天
* @return
*/
function lastMonthLast(){
return new Date(getCurrentMonthFirst().setDate(getCurrentMonthFirst().getDate()-1));
}
/**
* 获取上上个月的第一天
*/
function lastLastMonthFirst(){
return new Date(lastMonthFirst().setMonth(lastMonthFirst().getMonth()-1));
}
/**
* 获取上上个月最后一天
* @return
*/
function lastLastMonthLast(){
return new Date(lastMonthFirst().setDate(lastMonthFirst().getDate()-1));
}
/**
* 上N个月的第一天(N为变量)
* 获取当前月之前倒退到第n个月的第一天(例如现在是10月12号,n=2,beforeNMonthFirst(2)意思是获取上上个月的第一天)
*/
function beforeNMonthFirst(N){
var forCurrMonthFirst = getCurrentMonthFirst();
for(var i=0;i<N;i++){
forCurrMonthFirst=new Date(forCurrMonthFirst.setMonth(forCurrMonthFirst.getMonth()-1));
}
return forCurrMonthFirst;
}
/**
* 上N个月的最后一天(N为变量)
* 获取当前月之前倒退到第n个月的最后一天(例如现在是10月12号,n=2,beforeNMonthFirst(2)意思是获取上上个月的最后一天)
* @return
*/
function beforeNMonthLast(N){
//获取n-1个月前的第一天
var M = parseInt(N - 1);
var forCurrMonthFirst = getCurrentMonthFirst();
for(var i=0;i<M;i++){
forCurrMonthFirst=new Date(forCurrMonthFirst.setMonth(forCurrMonthFirst.getMonth()-1));
}
return new Date(forCurrMonthFirst.setDate(forCurrMonthFirst.getDate()-1));;
}
/**
* @description 对Date的扩展,将 Date 转化为指定格式的String
* 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
* 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
* 例子:
* (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
* (new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18
* @param fmt
* @return
*/
Date.prototype.Format = function(fmt) { //author: meizz
var o = {
"M+" : this.getMonth() + 1, //月份
"d+" : this.getDate(), //日
"h+" : this.getHours(), //小时
"m+" : this.getMinutes(), //分
"s+" : this.getSeconds(), //秒
"q+" : Math.floor((this.getMonth() + 3) / 3), //季度
"S" : this.getMilliseconds()
//毫秒
};
if (/(y+)/.test(fmt))
fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "")
.substr(4 - RegExp.$1.length));
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;
}
/**
* 获取前X天或者后X天
* @param AddDayCount
* @demo 今天:GetDateStr(0) 明天:GetDateStr(1) 昨天:GetDateStr(-1) 其它的以此类推
*/
function GetDateStr(AddDayCount) {
var dd = new Date();
dd.setDate(dd.getDate()+AddDayCount);//获取AddDayCount天后的日期
var y = dd.getFullYear();
var m = dd.getMonth()+1;//获取当前月份的日期
var d = dd.getDate();
return y+"-"+m+"-"+d;
}

//计算月份差
  function getMonthNumber(date1,date2){
  //默认格式为"20030303",根据自己需要改格式和方法
  var year1 =  date1.substr(0,4);
  var year2 =  date2.substr(0,4); 
  var month1 = date1.substr(4,2);
  var month2 = date2.substr(4,2);
  
  var len=(year2-year1)*12+(month2-month1);
  
  return len;


}


var len=getMonthNumber('200403','200504');


//alert('2003-03-03'.replace(/-/g, "/"));


//alert('2003-03-03'.replace(/-/g, ""));

if(len<0){
  alert("查询起始月份不能比查询终止月份大.");
 }else if(len >11){  
   alert("查询月份时间段不能超过12个月.");


}

//计算天数差
  function getDayNumber(date1,date2){
  //默认格式为"20030303",根据自己需要改格式和方法
  var year1 =  date1.substr(0,4);
  var year2 =  date2.substr(0,4); 
  var month1 = date1.substr(4,2);
  var month2 = date2.substr(4,2);
  
  var day1 = date1.substr(6,2);
  var day2 = date2.substr(6,2);
  
  temp1 = year1+"/"+month1+"/"+day1;
  temp2 = year2+"/"+month2+"/"+day2;
  
  var dateaa= new Date(temp1); 
  var datebb = new Date(temp2); 
  var date = datebb.getTime() - dateaa.getTime(); 
  var time = Math.floor(date / (1000 * 60 * 60 * 24));
  alert(time);

}

getDayNumber('20030303','20040503');

//。。。持续补充更新中。。。

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

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

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

  2. 代码片段:基于 JDK 8 time包的时间工具类 TimeUtil

    摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “知识的工作者必须成为自己时间的首席执行官.” 前言 这次泥瓦匠带来的是一个好玩的基于 JDK ...

  3. Java日期工具类,Java时间工具类,Java时间格式化

    Java日期工具类,Java时间工具类,Java时间格式化 >>>>>>>>>>>>>>>>>&g ...

  4. 小记Java时间工具类

    小记Java时间工具类 废话不多说,这里主要记录以下几个工具 两个时间只差(Data) 获取时间的格式 格式化时间 返回String 两个时间只差(String) 获取两个时间之间的日期.月份.年份 ...

  5. 超详细的Java时间工具类

    package com.td.util; import java.sql.Timestamp; import java.text.ParseException; import java.text.Pa ...

  6. java时间工具类

    在项目中,很多地方需要根据时间获取相应的数据,将时间格式化,或者时间比较等相关操作.一个良好的工具类不仅可以减少代码冗余,还能促进业务处理,加快进度. /** * @author: lxw * @Da ...

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

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

  8. 基于Java8的日期时间工具类DateTimeFormatter

    原文:https://blog.csdn.net/qq_36596145/article/details/85331002 import java.time.Instant; import java. ...

  9. vue项目工具文件utils.js javascript常用工具类,javascript常用工具类,util.js

    vue项目工具文件utils.js :https://blog.csdn.net/Ajaxguan/article/details/79924249 javascript常用工具类,util.js : ...

随机推荐

  1. Java Web整合开发(20) -- Hibernate入门

    Spring与Hibernate整合

  2. python 性能- and-or 学习技能

    C语言类似表情: bool ? a : b ,当表达式值为真的话,值为a.否则为b. 看一个样例: >>> a = "first" >>> b ...

  3. SQLServer 2008 技术内幕——T-SQL 查询 笔记

    原文:SQLServer 2008 技术内幕--T-SQL 查询 笔记 1.SQL编程有许多独特之处,如:面向集合的思维方式.查询元素的逻辑处理顺序.三值逻辑.如果不掌握这些知识就开始用SQL编程,得 ...

  4. AFNetworking框架_上传文件或图像server

    的文本 XXXXXXXXXX在自己的论点更填写 - (void)uploadImageWithImage:(NSString *)imagePath { //上传其它所需參数 NSString *us ...

  5. 新版本NDK环境结构(避Cygwin,超快)

    曾经做Android的项目要用到NDK就必需要下载NDK,下载安装Cygwin(模拟Linux环境用的),下载CDT(Eclipse C/C++开发插件),还要配置编译器,环境变量... 麻烦到不想说 ...

  6. 第一次QQ群视频教育有感

    标题:第一次QQ群视频教育有感 作者:丁又专, 时间:2014.08.16     教育的目的:启示学生心智,发现个人优势,激发探索欲望.     今天早上看到 中国大学MOOC<文献管理与信息 ...

  7. 理解git经常使用命令原理

    git不同于类似SVN这样的版本号管理系统,尽管熟悉经常使用的操作就能够满足大部分需求,但为了在遇到麻烦时不至于靠蛮力去尝试,了解git的原理还是非常有必要. 文件 通过git管理的文件版本号信息所有 ...

  8. leaflet开源地图库源码 浏览器&移动设备判断(browser.js)备份

    <script> var isIe = !-[1,]; // alert('ie9 之前'+isIe); var ie = 'ActiveXObject' in window; //ale ...

  9. MVC5中使用SignalR2.0实现实时聊天室

    原文 MVC5中使用SignalR2.0实现实时聊天室 有时候需要浏览器和服务端保持实时的通讯(比如在线聊天),SignalR的出现让这一切变得非常简单.它能够让服务端向客户端实时的推送消息.如果用户 ...

  10. 【CTO辩论】移动创业大军:谁斗争or变更代理

    众创时代.英雄辈出. 但千军万马过独木桥,竞争厮杀也异常残酷.有人说,这个时代不宜创业,由于技术门槛高了.推广难度高了.盈利模式没了.创业变重了.玩法变了...... 也有人说,时势造英雄.天时地利人 ...