js日期函数

对日期的处理,date类型和字符串类型的相互转换,日期合法性验证
Date.prototype.isLeapYear 判断闰年 Date.prototype.toFormat 日期转成format格式字符串 Date.prototype.DateAdd 日期计算 Date.prototype.DateDiff 比较日期差 Date.prototype.toString 日期转字符串 Date.prototype.toArray 日期分割为数组 Date.prototype.DatePart 取日期的部分信息 Date.prototype.MaxDayOfDate 取日期所在月的最大天数 Date.prototype.WeekNumOfYear 判断日期所在年的第几周 StringToDate 字符串转日期型 IsValidDate 验证日期有效性 CheckDateTime 完整日期时间检查 daysBetween 日期天数差

//---------------------------------------------------  
//日期转成format格式字符串
//---------------------------------------------------  
Date.prototype.toFormat(date, format) {var fmt = "yyyy-MM-dd";if (format){fmt = format;}var o = {"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+)/.test(fmt))fmt=fmt.replace(RegExp.$1, (date.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;}
//---------------------------------------------------  
// 判断闰年  
//---------------------------------------------------  
Date.prototype.isLeapYear = function()   
{   return (0==this.getYear()%4&&((this.getYear()%100!=0)||(this.getYear()%400==0)));   
}   //+---------------------------------------------------  
//| 求两个时间的天数差 日期格式为 YYYY-MM-dd   
//+---------------------------------------------------  
function daysBetween(DateOne,DateTwo)  
{   var OneMonth = DateOne.substring(5,DateOne.lastIndexOf ('-'));  var OneDay = DateOne.substring(DateOne.length,DateOne.lastIndexOf ('-')+1);  var OneYear = DateOne.substring(0,DateOne.indexOf ('-'));  var TwoMonth = DateTwo.substring(5,DateTwo.lastIndexOf ('-'));  var TwoDay = DateTwo.substring(DateTwo.length,DateTwo.lastIndexOf ('-')+1);  var TwoYear = DateTwo.substring(0,DateTwo.indexOf ('-'));  var cha=((Date.parse(OneMonth+'/'+OneDay+'/'+OneYear)- Date.parse(TwoMonth+'/'+TwoDay+'/'+TwoYear))/86400000);   return Math.abs(cha);  
}  //+---------------------------------------------------  
//| 日期计算  
//+---------------------------------------------------  
Date.prototype.DateAdd = function(strInterval, Number) {   var dtTmp = this;  switch (strInterval) {   case 's' :return new Date(Date.parse(dtTmp) + (1000 * Number));  case 'n' :return new Date(Date.parse(dtTmp) + (60000 * Number));  case 'h' :return new Date(Date.parse(dtTmp) + (3600000 * Number));  case 'd' :return new Date(Date.parse(dtTmp) + (86400000 * Number));  case 'w' :return new Date(Date.parse(dtTmp) + ((86400000 * 7) * Number));  case 'q' :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number*3, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());  case 'm' :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());  case 'y' :return new Date((dtTmp.getFullYear() + Number), dtTmp.getMonth(), dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());  }  
}  //+---------------------------------------------------  
//| 比较日期差 dtEnd 格式为日期型或者 有效日期格式字符串  
//+---------------------------------------------------  
Date.prototype.DateDiff = function(strInterval, dtEnd) {   var dtStart = this;  if (typeof dtEnd == 'string' )//如果是字符串转换为日期型  {   dtEnd = StringToDate(dtEnd);  }  switch (strInterval) {   case 's' :return parseInt((dtEnd - dtStart) / 1000);  case 'n' :return parseInt((dtEnd - dtStart) / 60000);  case 'h' :return parseInt((dtEnd - dtStart) / 3600000);  case 'd' :return parseInt((dtEnd - dtStart) / 86400000);  case 'w' :return parseInt((dtEnd - dtStart) / (86400000 * 7));  case 'm' :return (dtEnd.getMonth()+1)+((dtEnd.getFullYear()-dtStart.getFullYear())*12) - (dtStart.getMonth()+1);  case 'y' :return dtEnd.getFullYear() - dtStart.getFullYear();  }  
}  //+---------------------------------------------------  
//| 日期输出字符串,重载了系统的toString方法  
//+---------------------------------------------------  
Date.prototype.toString = function(showWeek)  
{   var myDate= this;  var str = myDate.toLocaleDateString();  if (showWeek)  {   var Week = ['日','一','二','三','四','五','六'];  str += ' 星期' + Week[myDate.getDay()];  }  return str;  
}  //+---------------------------------------------------  
//| 日期合法性验证  
//| 格式为:YYYY-MM-DD或YYYY/MM/DD  
//+---------------------------------------------------  
function IsValidDate(DateStr)   
{   var sDate=DateStr.replace(/(^\s+|\s+$)/g,''); //去两边空格;   if(sDate=='') return true;   //如果格式满足YYYY-(/)MM-(/)DD或YYYY-(/)M-(/)DD或YYYY-(/)M-(/)D或YYYY-(/)MM-(/)D就替换为''   //数据库中,合法日期可以是:YYYY-MM/DD(2003-3/21),数据库会自动转换为YYYY-MM-DD格式   var s = sDate.replace(/[\d]{ 4,4 }[\-/]{ 1 }[\d]{ 1,2 }[\-/]{ 1 }[\d]{ 1,2 }/g,'');   if (s=='') //说明格式满足YYYY-MM-DD或YYYY-M-DD或YYYY-M-D或YYYY-MM-D   {   var t=new Date(sDate.replace(/\-/g,'/'));   var ar = sDate.split(/[-/:]/);   if(ar[0] != t.getYear() || ar[1] != t.getMonth()+1 || ar[2] != t.getDate())   {   //alert('错误的日期格式!格式为:YYYY-MM-DD或YYYY/MM/DD。注意闰年。');   return false;   }   }   else   {   //alert('错误的日期格式!格式为:YYYY-MM-DD或YYYY/MM/DD。注意闰年。');   return false;   }   return true;   
}   //+---------------------------------------------------  
//| 日期时间检查  
//| 格式为:YYYY-MM-DD HH:MM:SS  
//+---------------------------------------------------  
function CheckDateTime(str)  
{   var reg = /^(\d+)-(\d{ 1,2 })-(\d{ 1,2 }) (\d{ 1,2 }):(\d{ 1,2 }):(\d{ 1,2 })$/;   var r = str.match(reg);   if(r==null)return false;   r[2]=r[2]-1;   var d= new Date(r[1],r[2],r[3],r[4],r[5],r[6]);   if(d.getFullYear()!=r[1])return false;   if(d.getMonth()!=r[2])return false;   if(d.getDate()!=r[3])return false;   if(d.getHours()!=r[4])return false;   if(d.getMinutes()!=r[5])return false;   if(d.getSeconds()!=r[6])return false;   return true;   
}   //+---------------------------------------------------  
//| 把日期分割成数组  
//+---------------------------------------------------  
Date.prototype.toArray = function()  
{   var myDate = this;  var myArray = Array();  myArray[0] = myDate.getFullYear();  myArray[1] = myDate.getMonth();  myArray[2] = myDate.getDate();  myArray[3] = myDate.getHours();  myArray[4] = myDate.getMinutes();  myArray[5] = myDate.getSeconds();  return myArray;  
}  //+---------------------------------------------------  
//| 取得日期数据信息  
//| 参数 interval 表示数据类型  
//| y 年 m月 d日 w星期 ww周 h时 n分 s秒  
//+---------------------------------------------------  
Date.prototype.DatePart = function(interval)  
{   var myDate = this;  var partStr='';  var Week = ['日','一','二','三','四','五','六'];  switch (interval)  {   case 'y' :partStr = myDate.getFullYear();break;  case 'm' :partStr = myDate.getMonth()+1;break;  case 'd' :partStr = myDate.getDate();break;  case 'w' :partStr = Week[myDate.getDay()];break;  case 'ww' :partStr = myDate.WeekNumOfYear();break;  case 'h' :partStr = myDate.getHours();break;  case 'n' :partStr = myDate.getMinutes();break;  case 's' :partStr = myDate.getSeconds();break;  }  return partStr;  
}  //+---------------------------------------------------  
//| 取得当前日期所在月的最大天数  
//+---------------------------------------------------  
Date.prototype.MaxDayOfDate = function()  
{   var myDate = this;  var ary = myDate.toArray();  var date1 = (new Date(ary[0],ary[1]+1,1));  var date2 = date1.dateAdd(1,'m',1);  var result = dateDiff(date1.Format('yyyy-MM-dd'),date2.Format('yyyy-MM-dd'));  return result;  
}  //+---------------------------------------------------  
//| 取得当前日期所在周是一年中的第几周  
//+---------------------------------------------------  
Date.prototype.WeekNumOfYear = function()  
{   var myDate = this;  var ary = myDate.toArray();  var year = ary[0];  var month = ary[1]+1;  var day = ary[2];  document.write('< script language=VBScript\> \n');  document.write('myDate = DateValue(''+month+'-'+day+'-'+year+'') \n');  document.write('result = DatePart('ww', myDate) \n');  document.write(' \n');  return result;  
}  //+---------------------------------------------------  
//| 字符串转成日期类型   
//| 格式 MM/dd/YYYY MM-dd-YYYY YYYY/MM/dd YYYY-MM-dd  
//+---------------------------------------------------  
function StringToDate(DateStr)  
{   var converted = Date.parse(DateStr);  var myDate = new Date(converted);  if (isNaN(myDate))  {   //var delimCahar = DateStr.indexOf('/')!=-1?'/':'-';  var arys= DateStr.split('-');  myDate = new Date(arys[0],--arys[1],arys[2]);  }  return myDate;  
}  

  

转载于:https://www.cnblogs.com/thomascui/p/5368489.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/271968.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

以下十种性格的人不适合做程序员,你​赞同吗? ​

目录 1. 宁愿参加培训&#xff0c;也不愿意自学 2. 喜欢正常的上下班时间 3. 喜欢正常加薪而不是跳槽 4. 无法和同事和睦共处 5. 容易垂头丧气 6. 思想保守&#xff0c;不考虑他人建议 7. 不注重细节 8. 没有工作荣誉感 9. 不能做到三思而后行 10. 不喜欢极客类型的人 以下十种…

Iterator与ListIterator有什么区别

Iterator与ListIterator区别如下&#xff1a; 1、Iterator是ListIterator的父接口。 2、Iterator是单列集合(Collection)公共取出容器中元素的方式。 对于List&#xff0c;Set都通用。 而ListIterator是List集合的特有取出元素方式。 3、Iterator中具备的功能只有hashNext(),ne…

mysql使用jpa仓储查询报错_Jpa自动查询报错

我解决了这个问题。后来我发现报错信息中还有一行&#xff0c;不管我怎么尝试&#xff0c;都是会提示某一个变量有问题&#xff0c;我做了一下修改&#xff0c;解决了。我下面详细写一下这个问题。其实web开发我不熟悉&#xff0c;我之前不是做这个是&#xff0c;所以我下面只是…

程序日志--要养成好习惯

最近写了几个DZ的插件&#xff0c;但是反馈有bug&#xff0c;但是模仿不出来&#xff0c;额滴神啊&#xff01;~~~ 所以做了个存储的日志&#xff0c;以方便检查错误。 /***需记录日志&#xff0c;调用此函数* param $text* param string $path*/public static function mark($…

IT行业17条经典语录

1. 手表定律&#xff1a;一个人有一只表时&#xff0c;可以知道现在是几点钟&#xff0c;当他拥有两只表时&#xff0c;却无法确定。所以&#xff0c;对于任何一件事情&#xff0c;不能同时设置两个不同的目标&#xff1b;对于一个人&#xff0c;也不能同时选择两种不同的价值…

Java哪些集合类是线程安全的?

Hashtable&#xff1a;就比Hashmap多了个线程安全&#xff0c;Hashtable加了synchronized关键字 Vector&#xff1a;就比Arraylist多了个同步化机制&#xff08;线程安全&#xff09;。 ConcurrentHashMap:是一种高效但是线程安全的集合。 Stack&#xff1a;栈&#xff0c;也…

mysql_install_db卸载_MySQL数据库的卸载与安装

MySQL数据库的卸载与安装MySQL的完全卸载因为不知道什么原因&#xff0c;电脑里同时存在两个版本的mysql&#xff0c;所以决定卸载重新安装&#xff0c;但是大家都说MySQL很难清除干净&#xff0c;所以特地查找完全卸载MySQL的方法。首先&#xff0c;快捷键winr输入regedit进入…

【VS开发】这就是COM组件

[实例]这就是COM组件 时间 2012-02-21 10:49:15 CSDN博客原文 http://blog.csdn.net/btwsmile/article/details/7278492主题 COM技术[实例]这就是COM组件 Author: ume Date:2012-02-21 自从微软推出.NET以来&#xff0c;COM技术就渐渐淡出人们的视野&#xff0c;然而这并不意味…

前端:QuickJS到底能干什么

QuickJS 是一个轻量且可嵌入的 JavaScript 引擎&#xff0c;它支持 ES2019 规范&#xff0c;包括 ES module、异步生成器以及 proxies。除此之外&#xff0c;还支持可选的数学扩展&#xff0c;例如大整数(BigInt)、大浮点数(BigFloat)和运算符重载。主要特点&#xff1a;轻量而…

随机存取是什么意思_手机小白必看!12GB+256GB,同样是GB,它们到底有什么不同?...

导语本文适合对电子产品有深度兴趣的小白&#xff0c;详细介绍了信息世界的数据计量单位&#xff0c;以及RAM与ROM的&#xff0c;文末给出了购机建议&#xff0c;建议不了解手机或者说半懂的同学观看。看完如果您觉得还可以的话&#xff0c;点赞关注&#xff0c;给小编一个鼓励…

ES6 解构赋值的用法笔记

1、概念&#xff1a;解构赋值可以理解为对赋值运算符的一种扩展。它主要针对数组或者对象进行模式匹配&#xff0c;然后对模式中的变量进行赋值。2、特性&#xff1a;采用ES6解构赋值的方式可以代码的可读性更高、代码书写更加简洁、清晰。3、解构模型&#xff1a;分为解构源、…

一.高阶函数

一.函数式编程中函数的特点 可以创建匿名函数 def声明带名函数&#xff0c;val声明匿名函数scala scala> def triple(x:Int):Int {3*x} scala> triple(2) res1: Int 6scala scala> val triple (x:Int) > 3*x scala> triple(2) res0: Int 6函数和数字一样&am…

线程和进程的区别?

进程是操作系统分配资源的最小单元&#xff0c;线程是操作系统调度的最小单元。 一个程序至少有一个进程,一个进程至少有一个线程。

收集12个经典的程序员段子

1bug 跟蚊子的相似之处&#xff1a;1、不知道藏在哪里。2、不知道有多少。3、总是在你即将睡觉休息的时候出现。2A&#xff1a;最近在看《一拳超人》&#xff0c;觉得咱们程序猿跟埼玉老师有点像啊&#xff01;B&#xff1a;哪里像了&#xff1f;A&#xff1a;越秃越强&#xf…

2020mysql安装教程_2020MySQL安装图文教程

MySQL安装图文教程(Windows10)1、MySQL下载可以去MySQL官网下载&#xff0c;或者在我提供的百度云链接下载。官网下载网速较慢&#xff0c;我从官网下载了将近四个小时&#xff0c;然后把下载好的放在了百度网盘&#xff0c;需要的而已自取。MySQL官网地址&#xff1a;MySQL官网…

说一下 runnable 和 callable 有什么区别?

主要区别 Runnable 接口 run 方法无返回值&#xff1b;Callable 接口 call 方法有返回值&#xff0c;支持泛型Runnable 接口 run 方法只能抛出运行时异常&#xff0c;且无法捕获处理&#xff1b;Callable 接口 call 方法允许抛出异常&#xff0c;可以获取异常信息 Runnable Ca…

几种常见的光纤接头(ST,SC,LC,FC)以及PC、APC和UPC的区别

一、几种常见的光纤接头(ST,SC,LC,FC)FC型光纤连接器&#xff1a;外部加强方式是采用金属套&#xff0c;紧固方式为螺丝扣。 一般在ODF侧采用(配线架上用的最多)SC型光纤连接器&#xff1a;连接GBIC光模块或普通光纤收发器的连接器&#xff0c;它的外壳呈矩形&#xff0c;紧固方…

nginx配置ssl

1.使用pfx证书配置ssl &#xff08;http://www.heartlifes.com/archives/12/&#xff09; 。上传证书 。生成证书crt及key文件 openssl pkcs12 -in /usr/local/nginx/ssl/xxx.pfx -clcerts -nokeys -out /usr/local/nginx/ssl/xxx.crt openssl pkcs12 -in /usr/local/nginx/ssl…

python开发客户端_python用700行代码实现http客户端

本文用python在TCP的基础上实现一个HTTP客户端, 该客户端能够复用TCP连接, 使用HTTP1.1协议.一. 创建HTTP请求HTTP是基于TCP连接的, 它的请求报文格式如下:因此, 我们只需要创建一个到服务器的TCP连接, 然后按照上面的格式写好报文并发给服务器, 就实现了一个HTTP请求.1. HTTPC…

家里网线的接法和顺序

对于网线&#xff0c;大伙都熟悉吧&#xff0c;它是电脑连接时必不可少的一种设备。但是许多网友却和小编一样&#xff0c;不知道如何连接网线&#xff0c;导致电脑无法上网&#xff0c;下面我们就来详细介绍一下&#xff1a;如何接网线以及家里网线的接法和顺序&#xff1f;希…