javascript中对Date类型的常用操作小结

javascript中对Date类型的常用操作小结

/**
3. * 日期时间脚本库方法列表:
4. * (1)Date.isValiDate:日期合法性验证
5. * (2)Date.isValiTime:时间合法性验证
6. * (3)Date.isValiDateTime:日期和时间合法性验证
7. * (4)Date.prototype.isLeapYear:判断是否闰年
8. * (5)Date.prototype.format:日期格式化
9. * (6)Date.stringToDate:字符串转成日期类型
10. * (7)Date.daysBetween:计算两个日期的天数差
11. * (8)Date.prototype.dateAdd:日期计算,支持正负数
12. * (9)Date.prototype.dateDiff:比较日期差:比较两个时期相同的字段,返回相差值
13. * (10)Date.prototype.toArray:把日期分割成数组:按数组序号分别为:年月日时分秒
14. * (11)Date.prototype.datePart:取得日期数据信息
15. */
16.
17.
18./**
19. * 日期合法性验证:判断dataStr是否符合formatStr指定的日期格式
20. * 示例:
21. * (1)alert(Date.isValiDate('2008-02-29','yyyy-MM-dd'));//true
22. * (2)alert(Date.isValiDate('aaaa-58-29','yyyy-MM-dd'));//false
23. * dateStr:必选,日期字符串
24. * formatStr:可选,格式字符串,可选格式有:(1)yyyy-MM-dd(默认格式)或YYYY-MM-DD (2)yyyy/MM/dd或YYYY/MM/DD (3)MM-dd-yyyy或MM-DD-YYYY (4)MM/dd/yyyy或MM/DD/YYYY
25. */
26.Date.isValiDate = function(dateStr, formatStr)
27.{
28.  if(!dateStr){
29.    return false;
30.  }
31.  if(!formatStr){
32.    formatStr = "yyyy-MM-dd";//默认格式:yyyy-MM-dd
33.  }
34.  if(dateStr.length!=formatStr.length){
35.    return false;
36.  }else{
37.    if(formatStr=="yyyy-MM-dd"||formatStr=="YYYY-MM-DD"){
38.      var r1=/^(((((([02468][048])|([13579][26]))(00))|(\d{2}(([02468][48])|([13579][26]))))\-((((0[13578])|(1[02]))\-(([0-2][0-9])|(3[01])))|(((0[469])|(11))\-(([0-2][0-9])|(30)))|(02\-([0-2][0-9]))))|(\d{2}(([02468][1235679])|([13579][01345789]))\-((((0[13578])|(1[02]))\-(([0-2][0-9])|(3[01])))|(((0[469])|(11))\-(([0-2][0-9])|(30)))|(02\-(([0-1][0-9])|(2[0-8]))))))$/;
39.      return r1.test(dateStr);
40.    }else if(formatStr=="yyyy/MM/dd"||formatStr=="YYYY/MM/DD"){
41.      var r2=/^(((((([02468][048])|([13579][26]))(00))|(\d{2}(([02468][48])|([13579][26]))))\/((((0[13578])|(1[02]))\/(([0-2][0-9])|(3[01])))|(((0[469])|(11))\/(([0-2][0-9])|(30)))|(02\/([0-2][0-9]))))|(\d{2}(([02468][1235679])|([13579][01345789]))\/((((0[13578])|(1[02]))\/(([0-2][0-9])|(3[01])))|(((0[469])|(11))\/(([0-2][0-9])|(30)))|(02\/(([0-1][0-9])|(2[0-8]))))))$/;
42.      return r2.test(dateStr);
43.    }else if(formatStr=="MM-dd-yyyy"||formatStr=="MM-DD-YYYY"){
44.      var r3=/^((((((0[13578])|(1[02]))\-(([0-2][0-9])|(3[01])))|(((0[469])|(11))\-(([0-2][0-9])|(30)))|(02\-([0-2][0-9])))\-(((([02468][048])|([13579][26]))(00))|(\d{2}(([02468][48])|([13579][26])))))|(((((0[13578])|(1[02]))\-(([0-2][0-9])|(3[01])))|(((0[469])|(11))\-(([0-2][0-9])|(30)))|(02\-(([0-1][0-9])|(2[0-8])))))\-\d{2}(([02468][1235679])|([13579][01345789])))$/;
45.      return r3.test(dateStr);
46.    }else if(formatStr=="MM/dd/yyyy"||formatStr=="MM/DD/YYYY"){
47.      var r4=/^((((((0[13578])|(1[02]))\/(([0-2][0-9])|(3[01])))|(((0[469])|(11))\/(([0-2][0-9])|(30)))|(02\/([0-2][0-9])))\/(((([02468][048])|([13579][26]))(00))|(\d{2}(([02468][48])|([13579][26])))))|(((((0[13578])|(1[02]))\/(([0-2][0-9])|(3[01])))|(((0[469])|(11))\/(([0-2][0-9])|(30)))|(02\/(([0-1][0-9])|(2[0-8])))))\/\d{2}(([02468][1235679])|([13579][01345789])))$/;
48.      return r4.test(dateStr);
49.    }else{
50.      alert("日期格式不正确!");
51.      return false;
52.    }
53.  }
54.  return false;
55.}
56.
57.
58./**
59. * 时间合法性验证:判断timeStr是否符合formatStr指定的时间格式
60. * 示例:
61. * (1)alert(Date.isValiTime('23:59:59','hh:mm:ss'));//true
62. * (2)alert(Date.isValiTime('24-68-89','hh:mm:ss'));//false
63. * timeStr:必选,日期字符串
64. * formatStr:可选,格式字符串,可选格式有:(1)hh:mm:ss(默认格式) (2)hh-mm-ss (3)hh/mm/ss
65. */
66.Date.isValiTime = function(timeStr, formatStr)
67.{
68.  if(!timeStr){
69.    return false;
70.  }
71.  if(!formatStr){
72.    formatStr = "hh:mm:ss";//默认格式:hh:mm:ss
73.  }
74.  if(timeStr.length!=formatStr.length){
75.    return false;
76.  }else{
77.    if(formatStr=="hh:mm:ss"){
78.      var r1=/^(([0-1][0-9])|(2[0-3]))\:([0-5][0-9])\:([0-5][0-9])$/;
79.      return r1.test(timeStr);
80.    }else if(formatStr=="hh-mm-ss"){
81.      var r2=/^(([0-1][0-9])|(2[0-3]))\-([0-5][0-9])\-([0-5][0-9])$/;
82.      return r2.test(timeStr);
83.    }else if(formatStr=="hh/mm/ss"){
84.      var r3=/^(([0-1][0-9])|(2[0-3]))\/([0-5][0-9])\/([0-5][0-9])$/;
85.      return r3.test(timeStr);
86.    }else{
87.      alert("时间格式不正确!");
88.      return false;
89.    }
90.  }
91.  return false;
92.}
93.
94.
95./**
96. * 日期和时间合法性验证
97. * 格式:yyyy-MM-dd hh:mm:ss
98. */
99.Date.isValiDateTime = function(dateTimeStr)
100.{
101.  var dateTimeReg=/^(((((([02468][048])|([13579][26]))(00))|(\d{2}(([02468][48])|([13579][26]))))\-((((0[13578])|(1[02]))\-(([0-2][0-9])|(3[01])))|(((0[469])|(11))\-(([0-2][0-9])|(30)))|(02\-([0-2][0-9]))))|(\d{2}(([02468][1235679])|([13579][01345789]))\-((((0[13578])|(1[02]))\-(([0-2][0-9])|(3[01])))|(((0[469])|(11))\-(([0-2][0-9])|(30)))|(02\-(([0-1][0-9])|(2[0-8]))))))(\s{1}(([0-1][0-9])|(2[0-3]))\:([0-5][0-9])\:([0-5][0-9]))?$/
102.  return dateTimeReg.test(dateTimeStr);
103.}
104.
105.
106./**
107. * 判断闰年 :一般规律为:四年一闰,百年不闰,四百年再闰。
108. */
109.Date.prototype.isLeapYear = function()
110.{
111.  return (this.getYear()%4==0&&((this.getYear()%100!=0)||(this.getYear()%400==0)));
112.}
113.
114.
115./**
116. * 日期格式化:
117. * formatStr:可选,格式字符串,默认格式:yyyy-MM-dd hh:mm:ss
118. * 约定如下格式:
119. * (1)YYYY/yyyy/YY/yy 表示年份
120. * (2)MM/M 月份
121. * (3)W/w 星期
122. * (4)dd/DD/d/D 日期
123. * (5)hh/HH/h/H 时间
124. * (6)mm/m 分钟
125. * (7)ss/SS/s/S 秒
126. * (8)iii 毫秒
127. */
128.Date.prototype.format = function(formatStr)
129.{
130.  var str = formatStr;
131.  if(!formatStr){
132.    str = "yyyy-MM-dd hh:mm:ss";//默认格式
133.  }
134.  var Week = ['日','一','二','三','四','五','六'];
135.
136.  str=str.replace(/yyyy|YYYY/,this.getFullYear());
137.  str=str.replace(/yy|YY/,(this.getYear() % 100)>9?(this.getYear() % 100).toString():'0' + (this.getYear() % 100));
138.
139.  str=str.replace(/MM/,this.getMonth()>=9?(parseInt(this.getMonth())+1).toString():'0' + (parseInt(this.getMonth())+1));
140.  str=str.replace(/M/g,(parseInt(this.getMonth())+1));
141.
142.  str=str.replace(/w|W/g,Week[this.getDay()]);
143.
144.  str=str.replace(/dd|DD/,this.getDate()>9?this.getDate().toString():'0' + this.getDate());
145.  str=str.replace(/d|D/g,this.getDate());
146.
147.  str=str.replace(/hh|HH/,this.getHours()>9?this.getHours().toString():'0' + this.getHours());
148.  str=str.replace(/h|H/g,this.getHours());
149.  str=str.replace(/mm/,this.getMinutes()>9?this.getMinutes().toString():'0' + this.getMinutes());
150.  str=str.replace(/m/g,this.getMinutes());
151.
152.  str=str.replace(/ss|SS/,this.getSeconds()>9?this.getSeconds().toString():'0' + this.getSeconds());
153.  str=str.replace(/s|S/g,this.getSeconds());
154.
155.  str=str.replace(/iii/g,this.getMilliseconds()<10?'00'+this.getMilliseconds():(this.getMilliseconds()<100?'0'+this.getMilliseconds():this.getMilliseconds()));
156.
157.  return str;
158.}
159.
160.
161./**
162. * 字符串转成日期类型:
163. * dateStr:必选,日期字符串,如果无法解析成日期类型,返回null
164. * 格式:
165. * (1)yyyy/MM/dd:IE和FF通用
166. * (2)MM/dd/yyyy:IE和FF通用
167. * (3)MM-dd-yyyy:仅IE
168. * (4)yyyy-MM-dd:非IE,且时钟被解析在8点整
169. */
170.Date.stringToDate = function(dateStr)
171.{
172.  if(!dateStr){
173.    alert("字符串无法解析为日期");
174.    return null;
175.  }else{
176.    if(Date.isValiDate(dateStr,"yyyy/MM/dd")||Date.isValiDate(dateStr,"MM/dd/yyyy")){
177.      return new Date(Date.parse(dateStr));
178.    }else{
179.      if((!-[1,])){//IE
180.        if(Date.isValiDate(dateStr,"MM-dd-yyyy")){
181.          return new Date(Date.parse(dateStr));
182.        }else{
183.          alert("字符串无法解析为日期");
184.          return null;
185.        }
186.      }else{//非IE
187.        if(Date.isValiDate(dateStr,"yyyy-MM-dd")){
188.          return new Date(Date.parse(dateStr));
189.        }else{
190.          alert("字符串无法解析为日期");
191.          return null;
192.        }
193.      }
194.    }
195.  }
196.  return null;
197.}
198.
199.
200./**
201. * 计算两个日期的天数差:
202. * dateOne:必选,必须是Data类型的实例
203. * dateTwo:必选,必须是Data类型的实例
204. */
205.Date.daysBetween = function(dateOne,dateTwo)
206.{
207.  if((dateOne instanceof Date)==false||(dateTwo instanceof Date)==false){
208.    return 0;
209.  }else{
210.    return Math.abs(Math.floor((dateOne.getTime()-dateTwo.getTime())/1000/60/60/24));
211.  }
212.}
213.
214.
215./**
216. * 日期计算:支持负数,即可加可减,返回计算后的日期
217. * num:必选,必须是数字,且正数是时期加,负数是日期减
218. * field:可选,标识是在哪个字段上进行相加或相减,字段见如下的约定。无此参数时,默认为d
219. * 约定如下格式:
220. * (1)Y/y 年
221. * (2)M 月
222. * (3)W/w 周
223. * (4)D/d 日
224. * (5)H/h 时
225. * (6)m 分
226. * (7)S/s 秒
227. * (8)Q/q 季
228. */
229.Date.prototype.dateAdd = function(num, field)
230.{
231.  if((!num)||isNaN(num)||parseInt(num)==0){
232.    return this;
233.  }
234.  if(!field){
235.    field = "d";
236.  }
237.  switch(field){
238.    case 'Y':
239.    case 'y':return new Date((this.getFullYear()+num), this.getMonth(), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds());break;
240.    case 'Q':
241.    case 'q':return new Date(this.getFullYear(), (this.getMonth()+num*3), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds());break;
242.    case 'M':return new Date(this.getFullYear(), this.getMonth()+num, this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds());break;
243.    case 'W':
244.    case 'w':return new Date(Date.parse(this) + ((86400000 * 7) * num));break;
245.    case 'D':
246.    case 'd':return new Date(Date.parse(this) + (86400000 * num));break;
247.    case 'H':
248.    case 'h':return new Date(Date.parse(this) + (3600000 * num));break;
249.    case 'm':return new Date(Date.parse(this) + (60000 * num));break;
250.    case 'S':
251.    case 's':return new Date(Date.parse(this) + (1000 * num));break;
252.    default: return this;
253.  }
254.  return this;
255.}
256.
257.
258./**
259. * 比较日期差:比较两个时期相同的字段,返回相差值
260. * dtEnd:必选,必须是Data类型的实例
261. * field:可选,标识是在哪个字段上进行比较,字段见如下的约定。无此参数时,默认为d
262. * 约定如下格式:
263. * (1)Y/y 年
264. * (2)M 月
265. * (3)W/w 周
266. * (4)D/d 日
267. * (5)H/h 时
268. * (6)m 分
269. * (7)S/s 秒
270. */
271.Date.prototype.dateDiff = function(dtEnd, field)
272.{
273.  var dtStart = this;
274.  if((dtEnd instanceof Date)==false){
275.    return 0;
276.  }else{
277.    if(!field){
278.      field = "d";
279.    }
280.    switch(field){
281.      case 'Y':
282.      case 'y':return dtEnd.getFullYear() - dtStart.getFullYear();break;
283.      case 'M':return (dtEnd.getMonth()+1)+((dtEnd.getFullYear()-dtStart.getFullYear())*12) - (dtStart.getMonth()+1);break;
284.      case 'W':
285.      case 'w':return parseInt((dtEnd - dtStart) / (86400000 * 7));break;
286.      case 'D':
287.      case 'd':return parseInt((dtEnd - dtStart) / 86400000);break;
288.      case 'H':
289.      case 'h':return parseInt((dtEnd - dtStart) / 3600000);break;
290.      case 'm':return parseInt((dtEnd - dtStart) / 60000);break;
291.      case 'S':
292.      case 's':return parseInt((dtEnd - dtStart) / 1000);break;
293.      default: return 0;
294.    }
295.    return 0;
296.  }
297.}
298.
299.
300./**
301. * 把日期分割成数组:按数组序号分别为:年月日时分秒
302. */
303.Date.prototype.toArray = function()
304.{
305.  var myArray = new Array();
306.  myArray[0] = this.getFullYear();
307.  myArray[1] = this.getMonth();
308.  myArray[2] = this.getDate();
309.  myArray[3] = this.getHours();
310.  myArray[4] = this.getMinutes();
311.  myArray[5] = this.getSeconds();
312.  return myArray;
313.}
314.
315.
316./**
317. * 取得日期数据信息:
318. * field:可选,标识是在哪个字段上进行比较,字段见如下的约定。无此参数时,默认为d
319. * (1)Y/y 年
320. * (2)M 月
321. * (3)W/w 周
322. * (4)D/d 日
323. * (5)H/h 时
324. * (6)m 分
325. * (7)S/s 秒
326. */
327.Date.prototype.datePart = function(field)
328.{
329.  if(!field){
330.    field = "d";
331.  }
332.  var Week = ['日','一','二','三','四','五','六'];
333.  switch (field){
334.    case 'Y' :
335.    case 'y' :return this.getFullYear();break;
336.    case 'M' :return (this.getMonth()+1);break;
337.    case 'W' :
338.    case 'w' :return Week[this.getDay()];break;
339.    case 'D' :
340.    case 'd' :return this.getDate();break;
341.    case 'H' :
342.    case 'h' :return this.getHours();break;
343.    case 'm' :return this.getMinutes();break;
344.    case 's' :return this.getSeconds();break;
345.    default:return this.getDate();
346.  }
347.  return this.getDate();
348.} 

以上这篇javascript中对Date类型的常用操作小结就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • javascript引用类型之时间Date和数组Array

    Javascript引用类型之时间Date JavaScript中的Date类型是在早期Java中的java.util.Date类基础上构建的.为此,Date类型使用自UTC 1970年1月1日零时开始经过的毫秒数来保存日期.在使用这种数据存储格式的条件下,Date类型保存的日期能够精确到1970年1月1日之前或之后的285 616年. 创建日期对象 在javascript中,可以使用Date()构造函数来创建日期对象,如: 复制代码 代码如下: var date=new Date(); 当没有

  • js表格排序实例分析(支持int,float,date,string四种数据类型)

    本文实例讲述了js表格排序的方法.分享给大家供大家参考.具体如下: <html> <head> <title>SortTable2</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <script type="text/javascript"> var k=0; /**//*

  • 让python json encode datetime类型

    实现代码如下: 复制代码 代码如下: import json from datetime import date, datetime def __default(obj): if isinstance(obj, datetime): return obj.strftime('%Y-%m-%dT%H:%M:%S') elif isinstance(obj, date): return obj.strftime('%Y-%m-%d') else: raise TypeError('%r is not

  • javascript学习笔记(六) Date 日期类型

    1.创建日期对象 复制代码 代码如下: var now = new Date(); //获得当前系统日期和时间 var someDate = new Date(Date.parse("May 25,2012")); var someDate = new Date("May 25,2012"); //与上相同 var someDate = new Date(Date.UTC(2010,0)); //GMT时间2010年1月1日凌晨0时 var someDate = n

  • 简单谈谈javascript Date类型

    1 创建一个新的日期对象,如果不带参数,则对象自动获得当前的日期和时间 var d = new Date() 2 如果需要指定特定的日期,则可以通过Date.parse() 或者 Date().UTC(),返回时间戳作为 new Date()的参数 Date.parse() 用法: var time = Date.parse('2015/05/20'); var newDate = new Date(time);//Wed May 20 2015 00:00:00 GMT+0800 (中国标准时

  • Javascript中Date类型和Math类型详解

    Date类型 ECMASCript中的Date类型是在早期中Java中的java.util.Date类基础上构建的.为此Date类型使用自UTC(国际协调时间)1970年1月1日午夜(0时)开始经过的毫秒数来保存日期. 创建日期对象 1.创建当前日期.不需要传入参数 2.创建指定日期.需要传入参数,必须传入表示该日期的毫秒数(即从1970年1月1日午夜起至该日期止经过的毫秒数).为了简化这一计算过程,ECMAScript提供了两个方法:Date.parse()和Date.UTC(). var n

  • JavaScript:Date类型全面解析

    创建一个日期对象,使用new操作符后跟Date的构造函数. var date = new Date(); 调用默认构造函数情况下,新创建的日期自动获得当前时间和日期.如果需要指定日期和时间,需要传入表示该日期的毫秒数. JavaScript中提供了两个方法来计算日期,Date.parse()方法接收一个表示日期的字符串参数,然后根据这个日期返回相应的日期毫秒数.但是日期的格式往往因实现以及地区而异.Date.UTC()也返回表示日期的毫秒数,它的参数分别是年份.基于0的月份(一月是0).月中的那

  • javascript中对Date类型的常用操作小结

    javascript中对Date类型的常用操作小结 /** 3. * 日期时间脚本库方法列表: 4. * (1)Date.isValiDate:日期合法性验证 5. * (2)Date.isValiTime:时间合法性验证 6. * (3)Date.isValiDateTime:日期和时间合法性验证 7. * (4)Date.prototype.isLeapYear:判断是否闰年 8. * (5)Date.prototype.format:日期格式化 9. * (6)Date.stringToD

  • 详解javaScript中Number数字类型的使用

    目录 前言 Number数字 自带属性值 基础使用 总结 源码地址 前言 Number和Math都属于JavaScript中的内置对象,Number数字类型作为基础数据类型,我们在开发过程中会经常用到,包括数字精度的格式化,还有字符串转换成数字等操作. Number数字 自带属性值 Number.EPSILON 两个可表示(representable)数之间的最小间隔. Number.MAX_SAFE_INTEGER JavaScript 中最大的安全整数 (2^53 - 1). Number.

  • JavaScript中判断对象类型的几种方法总结

    我们知道,JavaScript中检测对象类型的运算符有:typeof.instanceof,还有对象的constructor属性: 1) typeof 运算符 typeof 是一元运算符,返回结果是一个说明运算数类型的字符串.如:"number","string","boolean","object","function","undefined"(可用于判断变量是否存在). 但 type

  • js字符串类型String常用操作实例总结

    本文实例讲述了js字符串类型String常用操作.分享给大家供大家参考,具体如下: 字符串是不可变的. 对字符串的所有操作都会返回一个新字符串,原字符串不变 在 ie 6-7 时,' abc ' + ' cdf '  如果两个大量的字符串拼接,性能很低,原因是需要开辟新内存 和 创建新变量,导致性能低下,而在ie8 后得到大幅改善. 字符串常用方法 // 创建字符串 var a = new String('123') var a = '123' a.length // => 3, length属

  • 深入浅析JavaScript中的Function类型

    Function是javascript里最常用的一个概念,javascript里的function是最容易入手的一个功能,但它也是javascript最难理解最难掌握的一个概念. 1. Function类型是js中引用类型之一,每个函数实际上都是Function类型的实例对象,具有自己的属性和方法.正因为函数式对象,所以函数名实际上也是一个指向函数对象的指针. 2. 常用的函数定义方式 1. 函数声明: function sum(a , b ){ return a+b; } 2. 表达式: va

  • JavaScript 字符串常用操作小结(非常实用)

    字符串截取 1. substring() xString.substring(start,end) substring()是最常用到的字符串截取方法,它可以接收两个参数(参数不能为负值),分别是要截取的开始位置和结束位置,它将返回一个新的字符串,其内容是从start处到end-1处的所有字符.若结束参数(end)省略,则表示从start位置一直截取到最后. let str = 'www.jeffjade.com' console.log(str.substring(0,3)) // www co

  • Java中对List集合的常用操作详解

    目录: 1.list中添加,获取,删除元素: 2.list中是否包含某个元素: 3.list中根据索引将元素数值改变(替换): 4.list中查看(判断)元素的索引: 5.根据元素索引位置进行的判断: 6.利用list中索引位置重新生成一个新的list(截取集合): 7.对比两个list中的所有元素: 8.判断list是否为空: 9.返回Iterator集合对象: 10.将集合转换为字符串: 11.将集合转换为数组: 12.集合类型转换: 备注:内容中代码具有关联性. 1.list中添加,获取,

  • JavaScript中发出HTTP请求最常用的方法

    JavaScript具有很好的模块和方法来发送可用于从服务器端资源发送或接收数据的HTTP请求.在本文中,我们将介绍一些在JavaScript中发出HTTP请求的流行方法. Ajax Ajax是发出异步HTTP请求的传统方式.可以使用HTTP POST方法发送数据,并使用HTTP GET方法接收数据.我们来看看发送GET请求.我将使用JSONPlaceholder,这是一个免费的在线REST API,适用于以JSON格式返回随机数据的开发人员. 要在Ajax中进行HTTP调用,您需要初始化一个新

  • JS中创建自定义类型的常用模式总结【工厂模式,构造函数模式,原型模式,动态原型模式等】

    本文实例讲述了JS中创建自定义类型的常用模式.分享给大家供大家参考,具体如下: 虽然在 ES6 中,已经出了 class 的语法,貌似好像不用了解 ES5 中的这些老东西了,但是越深入学习,你会发现理解这些模式的重要性. 在本文中,我会描述 7 种常用的创建自定义类型的模式:工厂模式.构造函数模式.原型模式.组合使用构造函数模式.动态原型模式.寄生构造函数模式.稳妥构造函数模式.分别给出他们的示例代码,并分析他们的利弊,方便读者选择具体的方式来构建自己的自定义类型. 最后,我会指出 ES6 中的

  • 详解Mybatis-plus中更新date类型数据遇到的坑

    最近一年的项目都是在使用Mybatis-plus,感觉挺好用的,也没遇到很多问题,但是在最近项目上线之后,遇到了一些新的需要,在进行新版本开发的时候就开始遇到坑了,今天来说一下更新数据中有date类型数据的时候会出现的问题. 实体类部分字段如下: @Data @Builder @NoArgsConstructor @AllArgsConstructor public class ProductPo implements Serializable { /** * 产品主键,自增 */ privat

随机推荐