jin-tool v0.0.3
基于平时所用组合的函数工具库
安装
npm i jin-tool
DATE(基于xe-utils)二次封装
now () 返回当前时间戳
jinTool.now() // Date.now() 获取当前时间 1514096716800
timestamp (date, format) 将日期转为时间戳
jinTool.timestamp() // jinTool.now() = Date.now() 获取当前时间戳 1514096716800
jinTool.timestamp(new Date()) // 1514096716800
jinTool.timestamp('2018-12-01') // 1543593600000
jinTool.timestamp('2017/12/20 10:10:30.459', 'yyyy/MM/dd HH:mm:ss.SSS') // 1513735830459
toStringDate (str, format) 任意格式字符串转为日期
属性 | 描述 |
---|---|
yyyy | 年份 |
MM | 月份 |
dd | 日 |
HH | 小时 |
mm | 分钟 |
ss | 秒 |
SSS | 毫秒 |
Z | 时区 |
jinTool.toStringDate('12/20/2017')
// 如果解析错误则返回 new Date('Invalid Date')
jinTool.toStringDate('2017-12-20')
// new Date(2017, 11, 20)
jinTool.toStringDate('2017-12-20 10:10:30')
// new Date(2017, 11, 20, 10, 10, 30)
jinTool.toStringDate('2017-12-20 10:10:30.568')
// new Date(2017, 11, 20, 10, 10, 30, 568)
jinTool.toStringDate('2017-12-20 10:10:30.2514766')
// new Date(2017, 11, 20, 10, 10, 30, 251)
jinTool.toStringDate('2017-12-20T10:10:30.738+0800')
// Wed Dec 20 2017 10:10:30 GMT+0800 (中国标准时间)
jinTool.toStringDate('2017-12-20T10:10:30.738+01:00')
// Wed Dec 20 2017 17:10:30 GMT+0800 (中国标准时间)
jinTool.toStringDate('2017-12-20T10:10:30.738Z')
// Wed Dec 20 2017 18:10:30 GMT+0800 (中国标准时间)
jinTool.toStringDate('12/20/2017', 'MM/dd/yyyy')
// Wed Dec 20 2017 00:00:00 GMT+0800 (中国标准时间)
jinTool.toStringDate('20171220101030', 'yyyyMMddHHmmss')
// Wed Dec 20 2017 10:10:30 GMT+0800 (中国标准时间)
jinTool.toStringDate('2017/12/20 10:10:30', 'yyyy/MM/dd HH:mm:ss')
// Wed Dec 20 2017 10:10:00 GMT+0800 (中国标准时间)
jinTool.toStringDate('12/20/2017 10:10:30.100', 'MM/dd/yyyy HH:mm:ss.SSS')
// Wed Dec 20 2017 10:10:30 GMT+0800 (中国标准时间)
toDateString (date , format, options) 日期格式化为任意格式字符串(需要注意如果使用了年的第几周等特殊格式,可能会导致跨年偏移,应该避免和年份同时使用)
属性 | 描述 | 备注 | 值的范围 |
---|---|---|---|
yy | 年份 | 自动截取后两位 | |
yyyy | 年份 | ||
M | 月份 | 1~12 | |
MM | 月份 | 自动补0 | 01~12 |
d | 日 | 1~31 | |
dd | 日 | 自动补0 | 01~31 |
h | 12小时制 | 1~12 | |
hh | 12小时制 | 自动补0 | 01~12 |
H | 24小时制 | 0~23 | |
HH | 24小时制 | 自动补0 | 00~23 |
m | 分钟 | 0~59 | |
mm | 分钟 | 自动补0 | 00~59 |
s | 秒 | 0~59 | |
ss | 秒 | 自动补0 | 00~59 |
S | 毫秒 | 0~999 | |
SSS | 毫秒 | 自动补0 | 000~999 |
a | am/pm,小写 | am/pm | |
A | AM/PM,大写 | AM/PM | |
D | 年份的第几天 | 1~366 | |
DDD | 年份的第几天 | 自动补0 | 001~366 |
e | 星期几 | 0~6 | |
E | 星期几 | 1~7 | |
q | 季度 | 1~4 | |
W | 年的第几周 | 1~53 | |
WW | 年的第几周 | 自动补0 | |
Z | 时区值 | +-HH:mm | |
ZZ | 时区值 | +-HHmm |
jinTool.toDateString(1483250730000)
// '2017-01-01 14:05:30'
jinTool.toDateString(new Date())
// '2017-01-01 14:05:30'
jinTool.toDateString('2017-01-01 10:05:30', 'MM/dd/yyyy')
// '01/01/2017'
jinTool.toDateString('2017-01-01 10:05:30', 'M/d/yyyy')
// '1/1/2017'
jinTool.toDateString(new Date(), 'yyyyMMddHHmmssSSS')
// '20170101140530099'
jinTool.toDateString(new Date(), 'yyyy-MM-dd HH:mm:ss.SSS')
// '2017-01-01 14:05:30.099'
jinTool.toDateString(new Date(), 'yyyy-MM-dd hh:mm:ss.SSS GMTZ')
// '2017-01-01 02:05:30.099 GMT+08:00'
jinTool.toDateString(new Date(), 'yyyy-MM-dd hh:mm:ss.SSS GMTZZ')
// '2017-01-01 02:05:30.099 GMT+0800'
jinTool.toDateString(new Date(), 'yyyy-M-d h:m:s.S')
// '2017-1-1 2:5:30.99'
jinTool.toDateString(new Date(), 'yyyy年MM月dd日 HH时mm分ss秒S毫秒,星期E 第q季度')
// '2017年01月01日 14时05分30秒99毫秒,星期0 第1季度'
jinTool.toDateString(new Date(), 'yy年M月d日 HH时m分s秒S毫秒,星期E 第q季度')
// '17年1月1日 14时5分30秒99毫秒,星期0 第1季度'
jinTool.toDateString(new Date(), 'yyyy年MM月dd日 hh时mm分ss秒SSS毫秒 ZZ 星期E e 第q季 今年第D天 a A')
// '2017年01月01日 02时05分30秒099毫秒 +0800 星期0 -1 第1季 今年第1天 pm PM'
jinTool.toDateString(new Date(), '[yyyy-MM] yyyy-MM-dd')
// 'yyyy-MM 2017-01-01'
getWhatYear (date, offsetYear , offsetMonth) 返回前几年或后几年的日期,可以指定年的最初时间(first)、年的最后时间(last)、年的月份(0~11),默认当前
jinTool.getWhatYear(new Date(), -1) // Mon Nov 20 2017 00:00:00 GMT+0800 (中国标准时间)
jinTool.getWhatYear(1513735830000, -1) // Tue Dec 20 2016 10:10:30 GMT+0800 (中国标准时间)
jinTool.getWhatYear('2017-12-20', -1) // Tue Dec 20 2016 00:00:00 GMT+0800 (中国标准时间)
jinTool.getWhatYear('2017-12-20', 1) // Thu Dec 20 2018 00:00:00 GMT+0800 (中国标准时间)
jinTool.getWhatYear('2017-12-20', 0, 'first') // Sun Jan 01 2017 00:00:00 GMT+0800 (中国标准时间)
jinTool.getWhatYear('2017-12-20', 0, 'last') // Sun Dec 31 2017 23:59:59 GMT+0800 (中国标准时间)
getWhatMonth (date, offsetMonth , offsetDay) 返回前几月或后几月的日期,可以指定月初(first)、月末(last)、天数,默认当前
jinTool.getWhatMonth(new Date(), -1) // Mon Nov 20 2017 00:00:00 GMT+0800 (中国标准时间)
jinTool.getWhatMonth(1513735830000, -1) // Mon Nov 20 2017 00:00:00 GMT+0800 (中国标准时间)
jinTool.getWhatMonth('2017-12-20', -1) // Mon Nov 20 2017 00:00:00 GMT+0800 (中国标准时间)
jinTool.getWhatMonth('2017-12-20', 1) // Sat Jan 20 2018 00:00:00 GMT+0800 (中国标准时间)
jinTool.getWhatMonth('2017-12-20', -1, 'first') // Wed Nov 01 2017 00:00:00 GMT+0800 (中国标准时间)
jinTool.getWhatMonth('2017-12-20', 1, 'last') // Wed Jan 31 2018 23:59:59 GMT+0800 (中国标准时间)
getWhatWeek (date, offsetWeek , offsetDay, startDay) 返回前几周或后几周的日期,可以指定星期几(0~6)与周视图的起始天(0~6,默认1),默认当前
jinTool.getWhatWeek(new Date(), -1) // Sun Dec 17 2017 00:00:00 GMT+0800 (中国标准时间)
jinTool.getWhatWeek(1513735830000, -1) // Sun Dec 17 2017 00:00:00 GMT+0800 (中国标准时间)
jinTool.getWhatWeek('2017-12-20', -1) // Sun Dec 17 2017 00:00:00 GMT+0800 (中国标准时间)
jinTool.getWhatWeek('2017-12-20', 1) // Sun Dec 31 2017 00:00:00 GMT+0800 (中国标准时间)
jinTool.getWhatWeek('2017-12-20', -1, 5, 1) // Fri Dec 15 2017 00:00:00 GMT+0800 (中国标准时间)
jinTool.getWhatWeek('2017-12-20', 0, 0, 0) // Sun Dec 17 2017 00:00:00 GMT+0800 (中国标准时间)
jinTool.getWhatWeek('2017-12-20', 1, 0, 0) // Sun Dec 24 2017 00:00:00 GMT+0800 (中国标准时间)
getWhatDay (date, offsetDay , offsetMode) 返回前几天或后几天的日期,可以指定当天最初时间(first)、当天的最后时间(last)
jinTool.getWhatDay(new Date(), -1) // Tue Dec 19 2017 00:00:00 GMT+0800 (中国标准时间)
jinTool.getWhatDay(1513735830000, -1) // Tue Dec 19 2017 00:00:00 GMT+0800 (中国标准时间)
jinTool.getWhatDay('2017-12-20', -1) // Tue Dec 19 2017 00:00:00 GMT+0800 (中国标准时间)
jinTool.getWhatDay('2017-12-20', 1) // Tue Dec 21 2017 00:00:00 GMT+0800 (中国标准时间)
jinTool.getWhatDay('2017-12-20', 0, 'first') // Wed Dec 20 2017 00:00:00 GMT+0800 (中国标准时间)
jinTool.getWhatDay('2017-12-20', 0, 'last') // Wed Dec 20 2017 23:59:59 GMT+0800 (中国标准时间)
getDayOfYear (date , offsetYear) 返回某个年份的天数,可以指定前几个年或后几个年,默认当前
jinTool.getDayOfYear(new Date()) // 365
jinTool.getDayOfYear(1513735830000) // 365
jinTool.getDayOfYear('2017-12-20') // 365
jinTool.getDayOfYear('2019-12-20', 1) // 366
jinTool.getDayOfYear('2020-12-20') // 366
getYearDay (date) 返回某个年份的第几天
jinTool.getYearDay(new Date()) // 149
jinTool.getYearDay('2017-01-20') // 20
jinTool.getYearDay('2018-05-20') // 140
getYearWeek (date) 返回某个年份的第几周
jinTool.getYearWeek(new Date()) // 22
jinTool.getYearWeek('2017-01-20') // 3
jinTool.getYearWeek('2018-05-20') // 20
getMonthWeek (date) 返回某个月份的第几周
jinTool.getMonthWeek(new Date()) // 4
jinTool.getMonthWeek('2017-01-20') // 3
jinTool.getMonthWeek('2018-05-20') // 2
getDayOfMonth (date , month) 返回某个月份的天数,可以指定前几个月或后几个月,默认当前
jinTool.getDayOfMonth(new Date()) // 31
jinTool.getDayOfMonth(1513735830000) // 31
jinTool.getDayOfMonth('2017-12-20') // 31
jinTool.getDayOfMonth('2017-12-20', -1) // 30
jinTool.getDayOfMonth('2017-12-20', 1) // 31
getDateDiff (startDate, endDate) 返回两个日期之间差距,如果结束日期小于开始日期 done 为 fasle
jinTool.getDateDiff('2017-11-20', '2017-12-21')
// { done: true, time: 2678400000, yyyy: 0, MM: 1, dd: 1, HH: 0, mm: 0, ss: 0, S: 0 }
jinTool.getDateDiff('2017-12-20', '2017-12-21')
// { done: true, time: 86400000, yyyy: 0, MM: 0, dd: 1, HH: 0, mm: 0, ss: 0, S: 0 }
jinTool.getDateDiff('2018-01-01', '2017-12-21')
// { done: false, time: 0 }
let dateDiff = jinTool.getDateDiff('2017-12-20 10:10:30', '2017-12-21 10:15:00')
let content = `${dateDiff.mm}分${dateDiff.ss}秒`
// '4分30秒'
方法类
发布订阅 createEventHub
const handler = data => console.log(data);
const hub = jinTool.createEventHub();
// 订阅,监听不同事件
hub.on('message', handler);
// 发布:发出事件以调用所有订阅给它们的处理程序,并将数据作为参数传递给它们
hub.emit('message', 'hello world'); // hello world
// 停止订阅
hub.off('message', handler);
cloneDeep:深复制
let obj={a:0}
let _temp = jinTool.cloneDeep(obj)
判断类
is:检查值是否为特定类型。
jinTool.is(Array, [1]); // true
jinTool.is(Map, new Map()); // true
jinTool.is(RegExp, /./g); // true
...
isPhone:是否是移动端
jinTool.isPhone() // false/true
DOM
smoothScroll:滚动到指定元素区域
jinTool.smoothScroll('#fooBar')
prohibitRCP:禁止右键、复制、粘贴
jinTools.prohibitRCP()