/**
* 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. 2015西雅图微软总部MVP峰会

    2015 西雅图微软总部MVP峰会记录   2015 西雅图微软总部MVP峰会记录 今年决定参加微软MVP全球峰会,在出发之前本人就已经写这篇博客,希望将本次会议原汁原味奉献给大家 因为这次是本人第一 ...

  2. RH133读书笔记(10)-Lab 10 Exploring Virtualization

    Lab 10 Exploring Virtualization Goal: To explore the Xen virtualization environment and the creation ...

  3. 建立ORACLE10G DATA GUARD---&gt;Physical Standby

    下面是我自己建Physical Standby,按照下面的步骤一步我一步,当然,打造成功,以下步骤可以作为建筑物Data Guard结构操作手册. HA和DG差额:HA:可以做IP切换自己主动  DG ...

  4. dba_dependencies查询结果视图

    [oracle@rhel63single ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Fri Mar 13 0 ...

  5. 走向DBA[MSSQL篇] 针对大表 设计高效的存储过程【原理篇】 附最差性能sql语句进化过程客串

    原文:走向DBA[MSSQL篇] 针对大表 设计高效的存储过程[原理篇] 附最差性能sql语句进化过程客串 测试的结果在此处 本篇详解一下原理 设计背景 由于历史原因,线上库环境数据量及其庞大,很多千 ...

  6. socket-详细分析No buffer space available(转)

    新年上班第一天,突然遇到一个socket连接No buffer space available的问题,导致接口大面积调用(webservice,httpclient)失败的问题,重启服务器后又恢复了正 ...

  7. 安装Docker

    安装Docker 1. 增加Repository配置文件 cat >/etc/yum.repos.d/docker.repo <<-EOF [dockerrepo]name=Dock ...

  8. Android开发之异步具体解释(二)之AsyncTask

    请尊重他人的劳动成果,转载请注明出处:Android开发之异步具体解释(二)之AsyncTask http://blog.csdn.net/fengyuzhengfan/article/details ...

  9. 使用Enterprise Architecture绘制10种UML画画

    UML绘制10种课程要求UML画画,选Enterprise Architecture作为一个绘图工具,每一个草图必须是网上找教程,我觉得很麻烦,还有一些数字并没有找到详细的教程.在我自己找一个绘图方法 ...

  10. SQL Server 2008杀数据库连接

    杀数据库连接: DECLARE @temp NVARCHAR(20) DECLARE myCurse CURSOR FOR SELECT spid FROM sys.sysprocesses WHER ...