0.0.3 • Published 5 months ago

jin-tool v0.0.3

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

基于平时所用组合的函数工具库

安装

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月份自动补001~12
d1~31
dd自动补001~31
h12小时制1~12
hh12小时制自动补001~12
H24小时制0~23
HH24小时制自动补000~23
m分钟0~59
mm分钟自动补000~59
s0~59
ss自动补000~59
S毫秒0~999
SSS毫秒自动补0000~999
aam/pm,小写am/pm
AAM/PM,大写AM/PM
D年份的第几天1~366
DDD年份的第几天自动补0001~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()