一、安装 / 使用


npm install moment

注:使用版本为 2.22.2

  1. var moment = require('moment');
  2. moment().format(); // 2018-09-11T11:34:13+08:00

moment 时间格式对照表

Key Key_2 Shorthand
years year y
quarters quarter Q
months month M
weeks week w
days day d
hours hour h
minutes minute m
seconds second s
milliseconds millisecond ms

二、解析


1、当前时间

  1. moment() //带时区
  2. moment().utc() //不带时区

2、字符串

moment(String, String, String, Boolean);

or

moment(String, String[], String, Boolean);

(1)第一个参数:ISO 8601 支持的字符串格式
  1. moment("2013-02-08 09:30:26.123+07:00")
  2. //or +'T'
  3. moment("2013-02-08T09:30:26.123+07:00")
(2)第二个参数:moment 支持的字符串格式

详细格式看文档

  1. moment("12-25-1995", "MM-DD-YYYY");
  2. // 如果您不知道输入字符串的确切格式,但知道它可能是众多格式之一,则可以使用格式数组。
  3. moment("12-25-1995", ["MM-DD-YYYY", "YYYY-MM-DD"]);
(3)第三个参数:指定 时区
  1. moment('2012 juillet', 'YYYY MMM', 'fr');
(4)第四个参数:开启 严格模式

严格的解析要求格式和输入完全匹配。

3、对象

  1. moment({ y :2010, M :3, d :5, h :15, m :10, s :3, ms :123});
  2. moment({ year :2010, month :3, day :5, hour :15, minute :10, second :3, millisecond :123});
  3. moment({ years:2010, months:3, days:5, hours:15, minutes:10, seconds:3, milliseconds:123});
  4. moment({ years:2010, months:3, date:5, hours:15, minutes:10, seconds:3, milliseconds:123});
  5. moment({ hour:15, minute:10 });

4、Unix Timestamp (seconds / milliseconds)

  1. moment.unix(1318781876); //10位 精确到秒
  1. moment(1318781876406); //13位 精确到毫秒

注:推荐个 UNIX 时间转化工具:http://tool.chinaz.com/Tools/unixtime.aspx

5、JS 的 DATE 对象

  1. moment(new Date(2011, 9, 16));

6、克隆

  1. var a = moment();
  2. // 方法一
  3. var b = moment(a);
  4. // 方法二
  5. var b = a.clone();

问:如何判断解析是否正确?

isValid()invalidAt()

  1. var m = moment("2011-10-10T10:20:90");
  2. m.isValid(); // false
  3. //您可以使用 invalidAt() 确定哪个日期单位溢出。
  4. m.invalidAt(); // 5 for seconds

三、取值 / 赋值


1、普通方法

毫秒

  1. //存
  2. moment().millisecond(Number);
  3. //取
  4. moment().millisecond(); // Number
  5. //存
  6. moment().milliseconds(Number);
  7. //取
  8. moment().milliseconds(); // Number

接受0到999之间的数字。如果超出范围,它将冒泡到秒。

  1. moment().second(Number);
  2. moment().second(); // Number
  3. moment().seconds(Number);
  4. moment().seconds(); // Number

接受0到59之间的数字。如果超出范围,它将冒泡到分钟。

分钟

  1. moment().minute(Number);
  2. moment().minute(); // Number
  3. moment().minutes(Number);
  4. moment().minutes(); // Number

接受从0到59的数字。如果超出范围,它将冒泡到小时

小时

  1. moment().hour(Number);
  2. moment().hour(); // Number
  3. moment().hours(Number);
  4. moment().hours(); // Number

接受0到23之间的数字。如果超出范围,它将会冒泡到当天。

日 of 月

  1. moment().date(Number);
  2. moment().date(); // Number
  3. moment().dates(Number);
  4. moment().dates(); // Number

接受从1到31的数字。如果超出范围,它将冒泡到几个月。

日 of 年

  1. moment().dayOfYear(Number);
  2. moment().dayOfYear(); // Number

接受从1到366的数字。如果超出范围,它将冒泡到多年。

星期

  1. moment().day(Number|String);
  2. moment().day(); // Number
  3. moment().days(Number|String);
  4. moment().days(); // Number

接受数字 | 字符串。星期日为0,星期六为6 | 星期日为Sunday,星期六为Saturday

星期(ISO)

  1. moment().isoWeekday(Number);
  2. moment().isoWeekday(); // Number

接受数字。星期一为1,星期日为7

星期(区域标准)

  1. moment().weekday(Number);
  2. moment().weekday(); // Number

按照区域设置(下面会有介绍)来定:

如果区域设置将星期一指定为一周的第一天,那moment().weekday(0)将是星期一。

如果区域设置将星期日指定为一周的第一天,那moment().weekday(0)将是星期天。

周 of 年(区域标准)

  1. moment().week(Number);
  2. moment().week(); // Number
  3. moment().weeks(Number);
  4. moment().weeks(); // Number

获取或设置一年中的一周。

按照区域设置(下面会有介绍)来定:

一年中的一周取决于哪一天是一周的第一天(星期日,星期一等),以及哪一周是一年中的第一周。

例如,在美国,星期日是一周的第一天。1月1日这一周是一年中的第一周;在法国,星期一是一周的第一天,而1月4日的星期是一年的第一周。

周 of 年(ISO)

  1. moment().isoWeek(Number);
  2. moment().isoWeek(); // Number
  3. moment().isoWeeks(Number);
  4. moment().isoWeeks(); // Number

获取或设置年份的 ISO 周。

查看一年有多少周数

  1. moment().weeksInYear();

根据当前时刻的区域设置获取周数。(只可 get 不可 set)

查看一年有多少周数 (ISO)

  1. moment().isoWeeksInYear();

根据 ISO 周,获取当前时刻的周数。(只可 get 不可 set)

  1. moment().month(Number|String);
  2. moment().month(); // Number
  3. moment().months(Number|String);
  4. moment().months(); // Number

接受数字 | 字符串。一月为0,十二月为11 | 一月为January,十二月为December

季度

  1. moment().quarter(); // Number
  2. moment().quarter(Number);

接受从1到4的数字。

  1. moment().year(Number);
  2. moment().year(); // Number
  3. moment().years(Number);
  4. moment().years(); // Number

获取或设置年份。接受 -270,000 至 270,000 的数字。

年 by 周(区域标准)

  1. moment().weekYear(Number);
  2. moment().weekYear(); // Number

根据区域设置获取或设置周年。

按照区域设置(下面会有介绍)来定:

例如,在美国,包含1月1日的一周始终是第一周。在美国,周也将在周日开始。如果1月1日是星期一,则12月31日将属于与1月1日相同的一周,因此与1月1日相同的周年。12月30日将与12月31日的周年不同(相差一年)

年 by 周(ISO)

  1. moment().isoWeekYear(Number);
  2. moment().isoWeekYear(); // Number

获取或设置 ISO 周年。

2、get / set 方法

取值

  1. moment().get('year');
  2. moment().get('month'); // 0 to 11
  3. moment().get('date');
  4. moment().get('hour');
  5. moment().get('minute');
  6. moment().get('second');
  7. moment().get('millisecond');

赋值

  1. moment().set('year', 2013);
  2. moment().set('month', 3); // April
  3. moment().set('date', 1);
  4. moment().set('hour', 13);
  5. moment().set('minute', 20);
  6. moment().set('second', 30);
  7. moment().set('millisecond', 123);
  8. //同时设置多个
  9. moment().set({'year': 2013, 'month': 3});

最大 / 小值

moment.max(Moment[,Moment...]);

or

moment.min(Moment[,Moment...]);

  1. var a = moment().subtract(1, 'day');
  2. var b = moment().add(1, 'day');
  3. moment.max(a, b); // b
  4. moment.min(a, b); // a

四、操作


moment 支持流畅的 链式操作,如:

  1. moment().add(7, 'days').subtract(1, 'months').year(2009).hours(0).minutes(0).seconds(0);

1、加减法

add() / subtract()

  1. moment().add(7, 'days');
  2. moment().add(7, 'days').add(1, 'months'); // with chaining
  3. moment().add({days:7,months:1}); // with object literal
  4. moment().add(moment.duration({'days' : 1});); // with add duration
  5. //特殊情况
  6. moment([2010, 0, 31]).add(1, 'months'); // February 28

2、取 开始时间 / 结束时间

startOf() / endOf()

  1. moment().startOf('year'); // set to January 1st, 12:00 am this year
  2. moment().startOf('month'); // set to the first of this month, 12:00 am
  3. moment().startOf('quarter'); // set to the beginning of the current quarter, 1st day of months, 12:00 am
  4. moment().startOf('week'); // set to the first day of this week, 12:00 am
  5. moment().startOf('isoWeek'); // set to the first day of this week according to ISO 8601, 12:00 am
  6. moment().startOf('day'); // set to 12:00 am today
  7. moment().startOf('hour'); // set to now, but with 0 mins, 0 secs, and 0 ms
  8. moment().startOf('minute'); // set to now, but with 0 seconds and 0 milliseconds
  9. moment().startOf('second'); // same as moment().milliseconds(0);

五、时区


1、修改全局时区

看我另一篇: 《从 moment -> nodejs -> sequelize -> postgres,你都得设置好时区》

2、修改具体时间的时区

utc()local()utcOffset()

  1. var a = moment();
  2. console.log(a.format()); // 2018-09-12T00:16:18+08:00
  3. a.utc(); //变成 utc 时区
  4. console.log(a.format()); // 2018-09-11T16:16:18Z
  5. a.local(); //变成 本地 时区
  6. console.log(a.format()); // 2018-09-12T00:16:18+08:00
  7. a.utcOffset(4); //变成 自定义 时区
  8. console.log(a.format()); // 2018-09-11T20:16:18+04:00

问:local() 是怎么知道你所在的时区是东八区呢?

答:Moment 也是通过 javascript 的 Date.getTimezoneOffset() 获取到操作系统时区的,而操作系统的时区可以这样修改(以 mac 为例):

3、 utcOffset() 详解

utcOffset() 的单位是分钟

  1. // getter
  2. console.log(moment().utcOffset()); //480
  3. // setter(以下两种方式结果一样)
  4. moment().utcOffset(480);
  5. // 如果输入小于16或大于-16,则会将输入解释为小时。
  6. moment().utcOffset(8);

4、Moment Timezone

修改时区时如果不想输入数字而是地域字符串,请添加 Moment Timezone 并使用 .tz():

  1. moment(1369266934311).tz('Asia/Shanghai')

六、显示


1、格式化

format()

  1. // 默认为 `moment.defaultFormat`,即 ISO8601格式 `YYYY-MM-DDTHH:mm:ssZ`
  2. moment().format(); // "2014-09-08T08:02:17-05:00" (ISO 8601)
  3. moment().format("dddd, MMMM Do YYYY, h:mm:ss a"); // "Sunday, February 14th 2010, 3:25:50 pm"
  4. // [] 用来插入自定义字符串
  5. moment().format('[today] dddd'); // 'today Sunday'

我常用的格式为YYYY-MM-DD HH:mm:ss,其他的格式的看文档。

2、时间差距

(1)人性化展示

时差(之前):fromNow() / from()

时差(之后):toNow() / to()

参数传 true 会简练显示:

  1. //fromNow()
  2. moment([2007, 0, 29]).fromNow(); // 4 years ago
  3. moment([2007, 0, 29]).fromNow(true); // 4 years
  4. //from()
  5. moment([2007, 0, 10]).from(moment([2007, 0, 5])); // "in 5 days"
  6. moment([2007, 0, 10]).from(moment([2007, 0, 5]), true); // "5 days"
  7. //toNow()
  8. moment([2007, 0, 29]).toNow(); // in 4 years
  9. moment([2007, 0, 29]).toNow(true); // 4 years
  10. //to()
  11. moment([2007, 0, 10]).to(moment([2007, 0, 5])); // "5 days ago"
  12. moment([2007, 0, 10]).to(moment([2007, 0, 5]), true); // "5 days"

注:不要通过 a.from(moment()) 去取代 a.fromNow() , 因为获取当前日期会有误差。

时差(之前)规则参考表:

Range Key Sample Output
0 to 45 seconds s a few seconds ago
45 to 90 seconds m a minute ago
90 seconds to 45 minutes mm 2 minutes ago ... 45 minutes ago
45 to 90 minutes h an hour ago
90 minutes to 22 hours hh 2 hours ago ... 22 hours ago
22 to 36 hours d a day ago
36 hours to 25 days dd 2 days ago ... 25 days ago
25 to 45 days M a month ago
45 to 345 days MM 2 months ago ... 11 months ago
345 to 545 days (1.5 years) y a year ago
546 days+ yy 2 years ago ... 20 years ago

时差(之后)规则参考表:

Range Key Sample Output
0 to 45 seconds s in seconds
45 to 90 seconds m in a minute
90 seconds to 45 minutes mm in 2 minutes ... in 45 minutes
45 to 90 minutes h in an hour
90 minutes to 22 hours hh in 2 hours ... in 22 hours
22 to 36 hours d in a day
36 hours to 25 days dd in 2 days ... in 25 days
25 to 45 days M in a month
45 to 345 days MM in 2 months ... in 11 months
345 to 547 days (1.5 years) y in a year
548 days+ yy in 2 years ... in 20 years
(2)毫秒展示

diff()

  1. var a = moment([2008, 6]);
  2. var b = moment([2007, 0]);
  3. a.diff(b, 'years'); // 1
  4. //对比精度提高
  5. a.diff(b, 'years', true); // 1.5
  6. b.diff(a, 'years', true); // -1.5

注:diff() 会有一些特殊的处理月和年差异。它经过优化,可确保相同日期的两个月始终是一个整数

所以1月15日到2月15日应该是1个月。 2月28日至3月28日应该是1个月。 2011年2月28日至2012年2月28日应该是1年。

(3)日历形式展示

moment().calendar(referenceTime, formats);

情况 显示
Last week Last Monday at 2:30 AM
The day before Yesterday at 2:30 AM
The same day Today at 2:30 AM
The next day Tomorrow at 2:30 AM
The next week Sunday at 2:30 AM
Everything else 7/10/2011
  1. moment("2018-09-02 12:12:12").calendar("2018-09-01 01:01:01");
  2. //"Tomorrow at 12:12 PM"
  3. moment("2018-09-02 12:12:12").calendar("2018-09-01 01:01:01", {
  4. sameDay: '[Today]',
  5. nextDay: '[明天]HH[点]', // focus here
  6. nextWeek: 'dddd',
  7. lastDay: '[Yesterday]',
  8. lastWeek: '[Last] dddd',
  9. sameElse: 'DD/MM/YYYY'
  10. });
  11. //"明天12点"

3、获取当月的天数

daysInMonth()

4、Unix 时间戳(秒 / 毫秒)

unix() / valueOf()

5、获取 JS 的 DATE 对象

toDate()

6、获取数组

toArray()

  1. moment().toArray(); // [2013, 1, 4, 14, 40, 16, 154];

7、获取对象

toObject()

  1. moment().toObject() // {
  2. // years: 2015
  3. // months: 6
  4. // date: 26,
  5. // hours: 1,
  6. // minutes: 53,
  7. // seconds: 14,
  8. // milliseconds: 600
  9. // }

七、查询


1、时间先后比较

(1)是否之前 / 之后 / 相同

isBefore / isAfter / isSame

  1. moment('2010-10-20').isBefore('2010-10-21'); // true
  2. // 第二个参数决定精度
  3. moment('2010-10-20').isBefore('2010-10-21', 'year'); // false

(2)是否之间 —— isBetween

遵循左开右开原则

  1. moment('2010-10-20').isBetween('2010-01-01', '2012-01-01', 'year'); // false
  2. moment('2010-10-20').isBetween('2009-12-31', '2012-01-01', 'year'); // true

2、是否是闰年

isLeapYear

3、是否是 moment 对象 / 是否是 Date 对象

isMoment / isDate


八、国际化


您可以加载多个区域设置并在它们之间轻松切换。

1、切换区域设置

(1)全局

moment.locale(xxx)

xxx 支持的区域可以看 node_modules/moment/locale/ 下的文件名

  1. // /app.js
  2. moment.locale('fr');
  3. moment(1316116057189).fromNow() // il y a une heure
  4. // /router/index.js
  5. moment.locale('en');
  6. moment(1316116057189).fromNow() // an hour ago

建议如下切换方式,可以判断是否切换成功:

  1. if (moment.locale('fr') === 'fr'){
  2. console.log("success");
  3. } else {
  4. console.log("fail");
  5. }

更改后不会影响原有实例:

  1. moment.locale('fr');
  2. var m = moment(1316116057189);
  3. m.fromNow(); // il y a une heure
  4. moment.locale('en');
  5. m.fromNow(); // il y a une heure
  6. moment(1316116057189).fromNow(); // an hour ago

支持模糊匹配,例如在浏览器中执行 window.navigator.language 返回 en-NZ,则会正确的识别为 en

  1. moment.locale('en-NZ'); // 'en'

(2)局部

  1. var fr = moment().locale('fr');
  2. fr.localeData().months(moment([2012, 0])) // "janvier"
  3. fr.locale('en');
  4. fr.localeData().months(moment([2012, 0])) // "January"

2、获取当前区域设置

(1)全局

  1. moment.locale(); // returns 'en'

(2)局部

  1. moment().locale(); // returns 'en'

3、获取 月份和星期 枚举列表

moment.months()

moment.monthsShort()

moment.weekdays()

moment.weekdaysShort()

moment.weekdaysMin()

  1. moment.months()
  2. /*[ 'January',
  3. 'February',
  4. 'March',
  5. 'April',
  6. 'May',
  7. 'June',
  8. 'July',
  9. 'August',
  10. 'September',
  11. 'October',
  12. 'November',
  13. 'December' ]*/
  14. moment.weekdays(3); // 'Wednesday'

4、获取区域设置的详细信息:

localeData()

  1. localeData = moment.localeData()
  2. // or
  3. localeData = moment.localeData('fr')
  4. //详细信息
  5. localeData.months()
  6. localeData.monthsShort()
  7. localeData.monthsParse()
  8. localeData.weekdays()
  9. localeData.weekdaysShort()
  10. localeData.weekdaysMin()
  11. localeData.weekdaysParse()
  12. localeData.longDateFormat()
  13. localeData.isPM()
  14. localeData.meridiem()
  15. localeData.calendar()
  16. localeData.relativeTime()
  17. localeData.pastFuture()
  18. localeData.ordinal()
  19. localeData.preparse()
  20. localeData.postformat()
  21. localeData.weeks()
  22. localeData.invalidDate()
  23. localeData.firstDayOfWeek()
  24. localeData.firstDayOfYear()

5、自定义区域设置

locale(string, object)

  1. moment.locale('en-my-settings', {
  2. // customizations.
  3. });

注:详细的自定义配置见文档

也可以覆盖已有语言环境。

  1. moment.locale('en', {
  2. // customizations
  3. });

还可以删除已有的语言环境

  1. moment.locale('fr', null);
  2. moment.locale('fr'); // 'en'

九、时间段


时间段在概念上更类似于 '2 小时'而不是'今天下午 2 点到 4 点'。因此,它们不是在依赖于上下文的单元之间进行转换的良好解决方案。

1、创建

moment.duration(Number);

moment.duration(Number, String);

moment.duration(Object);

moment.duration(String);

  1. moment.duration(100); // 100 milliseconds
  2. moment.duration(2, 'seconds');
  3. moment.duration(2, 'minutes');
  4. moment.duration(2, 'hours');
  5. moment.duration(2, 'days');
  6. moment.duration(2, 'weeks');
  7. moment.duration(2, 'months');
  8. moment.duration(2, 'years');
  9. moment.duration({
  10. seconds: 2,
  11. minutes: 2,
  12. hours: 2,
  13. days: 2,
  14. weeks: 2,
  15. months: 2,
  16. years: 2
  17. });

2、拟人化 输出

  1. moment.duration(1, "minutes").humanize(); // a minute
  2. // 详细点
  3. moment.duration(1, "minutes").humanize(true); // in a minute

3、量化输出

milliseconds() vs asMilliseconds()

  1. // 计算零头
  2. moment.duration(500).milliseconds(); // 500
  3. moment.duration(1500).milliseconds(); // 500
  4. moment.duration(15000).milliseconds(); // 0
  5. // 计算累计
  6. moment.duration(500).asMilliseconds(); // 500
  7. moment.duration(1500).asMilliseconds(); // 1500
  8. moment.duration(15000).asMilliseconds(); // 15000

seconds / asSeconds

minutes / asMinutes

hours / asHours

days / asDays

months / asMonths

years / asYears

注:还有另一种写法:

duration.get('hours') = duration.hours

duration.as('hours') = duration.asHours

4、加减法

add() / subtract()

  1. var a = moment.duration(1, 'd');
  2. var b = moment.duration(2, 'd');
  3. a.add(b).days(); // 3

5、判断是否是时间段

isDuration()


参考资料

官方文档:

http://momentjs.cn/docs/#/displaying/

http://momentjs.cn/timezone/docs/

moment.js 学习笔记的更多相关文章

  1. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  2. Vue.js学习笔记(2)vue-router

    vue中vue-router的使用:

  3. JS 学习笔记--9---变量-作用域-内存相关

    JS 中变量和其它语言中变量最大的区别就是,JS 是松散型语言,决定了它只是在某一个特定时间保存某一特定的值的一个名字而已.由于在定义变量的时候不需要显示规定必须保存某种类型的值,故变量的值以及保存的 ...

  4. WebGL three.js学习笔记 使用粒子系统模拟时空隧道(虫洞)

    WebGL three.js学习笔记 使用粒子系统模拟时空隧道 本例的运行结果如图: 时空隧道demo演示 Demo地址:https://nsytsqdtn.github.io/demo/sprite ...

  5. WebGL three.js学习笔记 法向量网格材质MeshNormalMaterial的介绍和创建360度全景天空盒的方法

    WebGL学习----Three.js学习笔记(5) 点击查看demo演示 Demo地址:https://nsytsqdtn.github.io/demo/360/360 简单网格材质 MeshNor ...

  6. WebGL three.js学习笔记 创建three.js代码的基本框架

    WebGL学习----Three.js学习笔记(1) webgl介绍 WebGL是一种3D绘图协议,它把JavaScript和OpenGL ES 2.0结合在一起,通过增加OpenGL ES 2.0的 ...

  7. vue.js 学习笔记3——TypeScript

    目录 vue.js 学习笔记3--TypeScript 工具 基础类型 数组 元组 枚举 字面量 接口 类类型 类类型要素 函数 函数参数 this对象和类型 重载 迭代器 Symbol.iterat ...

  8. 2019-4-29 js学习笔记

    js学习笔记一:js数据类型   1:基本数据类型       number类型(整数,小数)      String类型          boolean类型        NaN类型其实是一个nu ...

  9. 一点感悟:《Node.js学习笔记》star数突破1000+

    写作背景 笔者前年开始撰写的<Node.js学习笔记> github star 数突破了1000,算是个里程碑吧. 从第一次提交(2016.11.03)到现在,1年半过去了.突然有些感慨, ...

  10. JS学习笔记5_DOM

    1.DOM节点的常用属性(所有节点都支持) nodeType:元素1,属性2,文本3 nodeName:元素标签名的大写形式 nodeValue:元素节点为null,文本节点为文本内容,属性节点为属性 ...

随机推荐

  1. Android Spinner 设置setOnItemSelectedListener时,竟会默认触发一次事件!

    当然是关闭这坑货了: //禁止OnItemSelectedListener默认自动调用一次 spinnerDutyPerson.setSelection(0, true); //放到TagContai ...

  2. java学习笔记(十一):重写(Override)与重载(Overload)

    重写(Override) 重写是子类对父类的允许访问的方法的进行重新编写, 但是返回值和形参都不能改变. 实例 class Animal{ public void run(){ System.out. ...

  3. oracle 新增并返回新增的主键

    oracle 的insert into 语句需要返回新增的主键的时候,可以使用一下insert 语法: insert into ims.t_bank_inquire_results (t_date,l ...

  4. http://ctf.bugku.com/challenges#love:bugku--love

      做了一道逆向题目,主要关联到base64编码的知识点.下面做一分析. 题目如下:   通过测试,可知它没有加壳.尝试使用IDA进行分析. 1.IDA分析文件   打开文件后,按[shift+F12 ...

  5. 646. Maximum Length of Pair Chain 最长的链条长度

    [抄题]: You are given n pairs of numbers. In every pair, the first number is always smaller than the s ...

  6. 20175234 2018-2019-2 《Java程序设计》第五周学习总结

    20175234 2018-2019-2 <Java程序设计>第五周学习总结 接口实现流程简述 interface定义接口 接口只能定义常量和方法,方法不能是具体的 实现接口时,需类来完成 ...

  7. 事件委托在ios下面失效

    $(document).on("click","目标class",function(){ //安卓下点击可以,ios下面失效 }) 百度了下说是H5新定义的, ...

  8. logback log4j log4j2 性能实测

    logback log4j log4j2 性能实测 转载: https://blog.souche.com/logback-log4j-log4j2shi-ce/ 日志已经成为系统开发中不可或缺的一部 ...

  9. [SoapUI] 如何同时调用Global Script Library(放在SoapUI安装目录)和项目特有的Script Libary(放在项目代码下)

    SoapUI 支持引入多个package: Global Script library : 在SoapUI工具File->Preference中设置Project Script Library: ...

  10. GUI学习之〇——PyQt5安装

    GUI(Graphical User Interface)是程序和软件使用者的接口,好的GUI是一个良好的软件的前提,在这里演示一下用PyQt5做一个GUI的方法 软件需求:python3.6 用的是 ...