Comparing version
/** | ||
* xe-utils.js v1.5.25 | ||
* xe-utils.js v1.5.26 | ||
* (c) 2017-2018 Xu Liangzhan | ||
@@ -16,3 +16,3 @@ * ISC License. | ||
XEUtils.version = '1.5.25' | ||
XEUtils.version = '1.5.26' | ||
@@ -983,2 +983,21 @@ /** | ||
function toCookieUnitTime (unit, expires) { | ||
var num = parseFloat(expires) | ||
var nowdate = new Date() | ||
var time = nowdate.getTime() | ||
switch (unit) { | ||
case 'y': return dateExports.getWhatYear(nowdate, num).getTime() | ||
case 'M': return dateExports.getWhatMonth(nowdate, num).getTime() | ||
case 'd': return dateExports.getWhatDay(nowdate, num).getTime() | ||
case 'H': return time + num * 60 * 60 * 1000 | ||
case 'm': return time + num * 60 * 1000 | ||
case 's': return time + num * 1000 | ||
} | ||
return time | ||
} | ||
function toCookieUTCString (date) { | ||
return (baseExports.isDate(date) ? date : new Date(date)).toUTCString() | ||
} | ||
/** | ||
@@ -1015,16 +1034,16 @@ * cookie操作函数 | ||
if (opts.name) { | ||
var expires = opts.expires | ||
values.push(encode(opts.name) + '=' + encode(baseExports.isObject(opts.value) ? JSON.stringify(opts.value) : opts.value)) | ||
if (opts.expires) { | ||
if (isNaN(opts.expires)) { | ||
// UTCString | ||
opts.expires = opts.expires | ||
} else if (/^[0-9]{11,13}$/.test(opts.expires)) { | ||
// now | ||
opts.expires = new Date(opts.expires).toUTCString() | ||
} else if (baseExports.isDate(opts.expires)) { | ||
// Date | ||
opts.expires = opts.expires.toUTCString() | ||
if (expires) { | ||
if (isNaN(expires)) { | ||
// UTCString || Unit | ||
opts.expires = expires.replace(/^([0-9]+)(y|M|d|H|m|s)$/, function (text, num, unit) { | ||
return toCookieUTCString(toCookieUnitTime(unit, num)) | ||
}) | ||
} else if (/^[0-9]{11,13}$/.test(expires) || baseExports.isDate(expires)) { | ||
// Date || now | ||
opts.expires = toCookieUTCString(expires) | ||
} else { | ||
// day | ||
opts.expires = new Date(new Date().getTime() + parseFloat(opts.expires) * 86400000).toUTCString() | ||
opts.expires = toCookieUTCString(toCookieUnitTime('d', expires)) | ||
} | ||
@@ -1054,4 +1073,4 @@ } | ||
baseExports.objectAssign(cookie, { | ||
setItem: function (name, key) { | ||
cookie(name, key) | ||
setItem: function (name, key, options) { | ||
cookie(name, key, options) | ||
}, | ||
@@ -1170,9 +1189,25 @@ getItem: function (name) { | ||
/** | ||
* 返回前几个月或后几个月的日期 | ||
* 返回前几年或后几年的日期 | ||
* | ||
* @param {Date} date 日期或数字 | ||
* @param {String} month 月(默认0)、前几个月(-数值)、后几个月(数值) | ||
* @param {String} mode 获取哪天(默认null)、月初(first)、月末(last) | ||
* @param {String} year 年(默认当前年)、前几个年(数值)、后几个年(数值) | ||
* @return {Date} | ||
*/ | ||
function getWhatYear (date, year) { | ||
var currentDate = stringToDate(date) | ||
if (year) { | ||
var number = year && !isNaN(year) ? year : 0 | ||
currentDate.setFullYear(currentDate.getFullYear() + number) | ||
} | ||
return currentDate | ||
} | ||
/** | ||
* 返回前几月或后几月的日期 | ||
* | ||
* @param {Date} date 日期或数字 | ||
* @param {Number} month 月(默认当前月)、前几个月、后几个月 | ||
* @param {String} mode 获取哪天(默认当前天)、月初(first)、月末(last) | ||
* @return {Date} | ||
*/ | ||
function getWhatMonth (date, month, mode) { | ||
@@ -1209,3 +1244,3 @@ var currentDate = stringToDate(date) | ||
* @param {Date} date 日期 | ||
* @param {String} week 周(默认0)、前几周(-数值)、后几周(数值) | ||
* @param {Number} week 周(默认当前周)、前几周、后几周 | ||
* @param {Number} mode 星期天(默认0)、星期一(1)、星期二(2)、星期三(3)、星期四(4)、星期五(5)、星期六(6) | ||
@@ -1230,7 +1265,11 @@ * @return {Date} | ||
* @param {Date} date 日期或数字 | ||
* @param {String} day 天(默认0)、前几天(-数值)、后几天(数值) | ||
* @param {Number} day 天(默认当天)、前几天、后几天 | ||
* @return {Date} | ||
*/ | ||
function getWhatDay (date, day) { | ||
return new Date(stringToDate(date).getTime() + (day && !isNaN(day) ? day * 86400000 : 0)) | ||
var currentDate = stringToDate(date) | ||
if (day) { | ||
return new Date(currentDate.getTime() + (day && !isNaN(day) ? day * 86400000 : 0)) | ||
} | ||
return currentDate | ||
} | ||
@@ -1242,3 +1281,3 @@ | ||
* @param {Date} date 日期或数字 | ||
* @param {String} month 月(默认0)、前几个月(-数值)、后几个月(数值) | ||
* @param {Number} month 月(默认当月)、前几个月、后几个月 | ||
* @return {Number} | ||
@@ -1291,2 +1330,3 @@ */ | ||
dateToString: dateToString, | ||
getWhatYear: getWhatYear, | ||
getWhatMonth: getWhatMonth, | ||
@@ -1293,0 +1333,0 @@ getWhatWeek: getWhatWeek, |
/** | ||
* xe-utils.js v1.5.25 | ||
* xe-utils.js v1.5.26 | ||
* (c) 2017-2018 Xu Liangzhan | ||
@@ -7,2 +7,2 @@ * ISC License. | ||
*/ | ||
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):e.XEUtils=n()}(this,function(){"use strict";function e(){}function n(e){var n=[];return re.isArray(e)&&re.arrayEach(e,function(e){n.includes(e)||n.push(e)}),n}function t(){for(var e=[],t=0,r=arguments.length;t<r;t++)e=e.concat(arguments[t]);return n(e)}function r(e,n,t){return re.isArray(e)?e.sort(n?re.isFunction(n)?n.bind(t||this):function(e,t){return e[n]>t[n]?1:-1}:function(e,n){return e>n?1:-1}):e}function i(e){for(var n=[],t=re.objectValues(e),r=t.length-1;r>=0;r--){var i=r>0?pe.getRandom(0,r):0;n.push(t[i]),t.splice(i,1)}return n}function o(e,n){var t=i(e);return 1===arguments.length?t[0]:(n<t.length&&(t.length=n||0),t)}function u(e,n,t){if(e){if(t=t||this,re.isArray(e))return e.some(n,t);for(var r in e)if(e.hasOwnProperty(r)&&n.call(t,e[r],r,e))return!0}return!1}function a(e,n,t){if(e){if(t=t||this,re.isArray(e))return e.every(n,t);for(var r in e)if(e.hasOwnProperty(r)&&!n.call(t,e[r],r,e))return!1}return!0}function s(e,n,t){if(e){if(t=t||this,re.isArray(e))return e.filter(n,t);var r={};return re.each(e,function(i,o){n.call(t,i,o,e)&&(r[o]=i)}),r}return[]}function c(e,n,t){if(e){if(t=t||this,re.isArray(e))return e.find(n,t);for(var r in e)if(e.hasOwnProperty(r)&&n.call(t,e[r],r,e))return e[r]}}function f(e,n,t){var r=[];if(e){if(t=t||this,re.isArray(e))return e.map(n,t);re.each(e,function(){r.push(n.apply(t,arguments))})}return r}function l(e,n,t){var r=0;return t=t||this,re.each(e,n?re.isFunction(n)?function(){r+=n.apply(t,arguments)}:function(e,t){r+=e[n]}:function(e,n){r+=e}),r}function y(e){return"function"==typeof e}function h(e){return"string"==typeof e}function p(e){return"number"==typeof e}function g(e){return"object"==typeof e}function d(e){return!!e&&e.constructor===Object}function m(e){return"[object Date]"===z.call(e)}function v(e){return"undefined"!=typeof Symbol&&Symbol.isSymbol?Symbol.isSymbol(e):"symbol"==typeof e}function b(e){return function(n,t){if(n){if(h(n)||K(n))return e(n,t);for(var r in n)if(t===n[r])return r}return-1}}function x(e,n){return-1!==Q(e,n)}function S(e,n,t){for(var r,i=1,o=n.length;i<o;i++)r=n[i],E(j(n[i]),function(n){e[n]=t?F(r[n],t):r[n]});return e}function j(e){var n=[];if(e){if(Object.keys)return Object.keys(e);N(e,function(e,t){n.push(t)})}return n}function M(e){if(Object.values)return e?Object.values(e):[];var n=[];return E(j(e),function(t){n.push(e[t])}),n}function O(e){if(Object.entries)return e?Object.entries(e):[];var n=[];return E(j(e),function(t){n.push([t,e[t]])}),n}function D(e){return M(e)[0]}function w(e){var n=M(e);return n[n.length-1]}function N(e,n,t){for(var r in e)e.hasOwnProperty(r)&&n.call(t||this,e[r],r,e)}function E(e,n,t){for(var r=0,i=e.length||0;r<i;r++)n.call(t||this,e[r],r,e)}function T(e,n,t){return e?K(e)?y(e.forEach)?e.forEach(n,t||this):E(e,n,t||this):N(e,n,t||this):e}function A(n){return d(n)?function(e){var n={};return T(e,function(e,t){n[t]=A(e)}),n}(n):K(n)?function(n){return e.arrayMap(n,A)}(n):n}function F(e,n){return e?n?A(e):G(d(e)?{}:[],e):e}function I(e,n,t){var r=[],i="undefined"!=typeof document;if(this&&this.$context&&(this.$context=null),re.isArray(e)?r=e:arguments.length>1?r=[re.objectAssign({name:e,value:n},t)]:re.isObject(e)&&(r=[e]),!(r.length>0)){var o={};return i&&document.cookie&&re.arrayEach(document.cookie.split("; "),function(e){var n=e.indexOf("=");o[oe(e.substring(0,n))]=oe(e.substring(n+1)||"")}),1===arguments.length?o[e]:o}i&&re.arrayEach(r,function(e){var n=re.objectAssign({},e),t=[];n.name&&(t.push(ue(n.name)+"="+ue(re.isObject(n.value)?JSON.stringify(n.value):n.value)),n.expires&&(isNaN(n.expires)?n.expires=n.expires:/^[0-9]{11,13}$/.test(n.expires)?n.expires=new Date(n.expires).toUTCString():re.isDate(n.expires)?n.expires=n.expires.toUTCString():n.expires=new Date((new Date).getTime()+864e5*parseFloat(n.expires)).toUTCString()),re.arrayEach(["expires","path","domain","secure"],function(e){void 0!==n[e]&&t.push(n[e]&&"secure"===e?e:e+"="+n[e])})),document.cookie=t.join("; ")})}function k(e,n){if(e){if(re.isDate(e))return e;if(!isNaN(e))return new Date(e);if(re.isString(e)){n=n||"yyyy-MM-dd HH:mm:ss.SSS";var t=[];return re.arrayEach(ce,function(r){for(var i,o,u=0,a=r.rules,s=a.length;u<s;u++){if(i=a[u],(o=n.indexOf(i[0]))>-1){t.push(parseFloat(e.substring(o,o+i[1])||0)+(r.offset||0));break}u===s-1&&t.push(0)}}),new Date(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}}return"Invalid Date"}function H(e,n,t){var r=k(e),i=n&&!isNaN(n)?n:0,o=r.getHours(),u=r.getMinutes(),a=r.getSeconds(),s=r.getMilliseconds();if("first"===t){var c=r.getFullYear(),f=r.getMonth();return(f+=i)<0?new Date(c-Math.ceil((f=Math.abs(f))/12),12-(f%12||1),1,o,u,a,s):new Date(c+Math.floor(f/12),f%12,1,o,u,a,s)}if("last"===t)return new Date(H(r,i+1,"first").getTime()-864e5);var l=r.getDate(),y=H(r,i,"first"),h=y.getMonth();for(y.setDate(l);h<y.getMonth();)y.setDate(--l);return y}function P(e){var n={},t=e.split("?")[1]||"";return t&&re.arrayEach(t.split("&"),function(e){var t=e.split("=");n[decodeURIComponent(t[0])]=decodeURIComponent(t[1]||"")}),n}function R(){return ye?ye.origin||ye.protocol+"//"+ye.host:""}function U(e){var n=""+e;0===n.indexOf("/")&&(n=R()+n);var t=n.replace(/#.*/,"").match(/(\?.*)/),r={href:n,hash:"",host:"",hostname:"",protocol:"",port:"",search:t?t[1]:""};r.path=n.replace(/^([a-z0-9.+-]*:)\/\//,function(e,n){return r.protocol=n,""}).replace(/^([a-z0-9.+-]*)(:\d+)?\//,function(e,n,t){var i=t||"";return r.port=i.replace(":",""),r.hostname=n,r.host=n+i,"/"}).replace(/(#.*)/,function(e,n){return r.hash=n,""});var i=r.hash.match(/#((.*)\?|(.*))/);return r.pathname=r.path.replace(/(\?|#.*).*/,""),r.origin=r.protocol+"//"+r.host,r.hashKey=i?i[2]||"":"",r.hashQuery=P(r.hash),r.searchQuery=P(r.search),r}function C(e,n){return re.isFunction(n)?B.arraySort(B.arrayMap(e,n,this)):B.arraySort(e,n)}function $(){return C.apply(this,arguments)[0]}function q(){return C.apply(this,arguments).reverse()[0]}function J(e){if(e){var n=parseFloat(e);return isNaN(n)?0:n}return 0}function W(e){var n=new RegExp("(?:"+re.objectKeys(e).join("|")+")","g");return function(t){return String(t||"").replace(n,function(n){return e[n]})}}e.version="1.5.25";var B={arrayUniq:n,uniq:n,arrayUnion:t,union:t,arraySort:r,sort:r,arrayShuffle:i,shuffle:i,arraySample:o,sample:o,arraySome:u,some:u,arrayEvery:a,every:a,arrayFilter:s,filter:s,arrayFind:c,find:c,arrayMap:f,map:f,arraySum:l,sum:l},z=Object.prototype.toString,K=Array.isArray||function(e){return"[object Array]"===z.call(e)},Y=Number.isInteger,L=0,Q=b(function(e,n){if(e.indexOf)return e.indexOf(n);for(var t=0,r=e.length;t<r;t++)if(n===e[t])return t}),V=b(function(e,n){if(e.lastIndexOf)return e.lastIndexOf(n);for(var t=e.length-1;t>=0;t--)if(n===e[t])return t;return-1}),X=x,G=function(e){if(e){var n=arguments;if(!0!==e)return Object.assign?Object.assign.apply(Object,n):S(e,n);if(n.length>1)return e=K(e[1])?[]:{},S(e,n,!0)}return e},Z=j,_=M,ee=O,ne=D,te=w,re={isNaN:isNaN,isFinite:isFinite,isArray:K,isFloat:function(e){return null!==e&&!isNaN(e)&&!Y(e)},isInteger:Y,isFunction:y,isBoolean:function(e){return"boolean"==typeof e},isString:h,isNumber:p,isRegExp:function(e){return"[object RegExp]"===z.call(e)},isObject:g,isPlainObject:d,isDate:m,isError:function(e){return"[object Error]"===z.call(e)},isTypeError:function(e){return!!e&&e.constructor===TypeError},isEmpty:function(e){if(0===e||!p(e)){for(var n in e)return!1;return!0}return!1},isNull:function(e){return null===e},isSymbol:v,isArguments:function(e){return"[object Arguments]"===z.call(e)},isElement:function(e){return e&&h(e.nodeName)&&p(e.nodeType)},isDocument:function(e){return e&&9===e.nodeType&&"undefined"!=typeof document},isWindow:function(e){return e&&e===e.window&&"undefined"!=typeof window},isFormData:function(e){return"undefined"!=typeof FormData&&e instanceof FormData},isLeapYear:function(n){var t=(n?e.stringToDate(n):new Date).getFullYear();return t%4==0&&(t%100!=0||t%400==0)},getType:function(e){return null===e?""+e:v(e)?"symbol":m(e)?"date":K(e)?"array":typeof e},uniqueId:function(){return++L},getSize:function(e){var n=0;return h(e)||K(e)?e.length:(T(e,function(){n++}),n)},lastIndexOf:V,includes:x,contains:X,objectAssign:G,assign:G,extend:G,stringToJson:function(e){if(g(e))return e;if(h(e))try{return JSON.parse(e)}catch(e){console.error(e)}return{}},jsonToString:function(e){if(g(e))try{return JSON.stringify(e)}catch(e){console.error(e)}return e?""+e:""},objectKeys:j,keys:Z,objectValues:M,values:_,objectEntries:O,entries:ee,arrayFirst:D,first:ne,arrayLast:w,last:te,objectEach:N,arrayEach:E,each:T,groupBy:function(e,n,t){var r,i,o={};return e&&(h(n)?(i=n,n=null):n=y(n)?n.bind(t||this):i=null,T(e,function(t,u){r=n?n(t,u,e):i?t[i]:t,o[r]?o[r].push(t):o[r]=[t]})),o},objectMap:function(e,n,t){var r={};return T(e,function(i,o){r[o]=n.call(t||this,i,o,e)}),r},clone:F},ie={browse:function(){var e={isNode:!1,isMobile:!1,isPC:!1};if("undefined"==typeof window&&"undefined"!=typeof process)e.nodeJS=!0;else if(e.isMobile=function(){for(var e=["Android","webOS","iPhone","iPad","iPod","SymbianOS","BlackBerry","Windows Phone"],n=navigator.userAgent,t=0;t<e.length;t++)if(n.indexOf(e[t])>0)return!0;return!1}(),e.isPC=!e.isMobile,"undefined"!=typeof document){var n=document.body||document.documentElement;re.arrayEach(["webkit","khtml","moz","ms","o"],function(t){e["-"+t]=!!n[t+"MatchesSelector"]})}return e}},oe=decodeURIComponent,ue=encodeURIComponent;re.objectAssign(I,{setItem:function(e,n){I(e,n)},getItem:function(e){return I(e)},removeItem:function(e){I(e,null,{expires:-1})},getJSON:function(){return I()}});var ae={cookie:I},se=Date.now||function(){return(new Date).getTime()},ce=[{rules:[["yyyy",4],["yyy",3],["yy",2]]},{rules:[["MM",2],["M",1]],offset:-1},{rules:[["dd",2],["d",1]]},{rules:[["HH",2],["H",1]]},{rules:[["mm",2],["m",1]]},{rules:[["ss",2],["s",1]]},{rules:[["SSS",3],["SS",2],["S",1]]}],fe=[["yyyy",31536e6],["MM",2592e6],["dd",864e5],["HH",36e5],["mm",6e4],["ss",1e3],["S",0]],le={timestamp:se,now:se,stringToDate:k,dateToString:function(e,n){if(e){if(e=k(e),re.isDate(e)){var t=["日","一","二","三","四","五","六"],r={"q+":Math.floor((e.getMonth()+3)/3),"M+":e.getMonth()+1,"E+":e.getDay(),"d+":e.getDate(),"H+":e.getHours(),"m+":e.getMinutes(),"s+":e.getSeconds(),S:e.getMilliseconds()},i=String(n||"yyyy-MM-dd HH:mm:ss").replace(/(y+)/,function(n){return(""+e.getFullYear()).substr(4-n.length)});for(var o in r)if(r.hasOwnProperty(o)){var u=""+r[o];i=i.replace(new RegExp("("+o+")"),function(e){return"q+"===o||"E+"===o?t[u]:1===e.length?u:("00"+u).substr(u.length)})}return i}return e}return""},getWhatMonth:H,getWhatWeek:function(e,n,t){var r=k(e),i=Number(/^[0-7]$/.test(t)?t:r.getDay()),o=r.getDay(),u=r.getTime()+864e5*((0===i?7:i)-(0===o?7:o));return n&&!isNaN(n)&&(u+=6048e5*n),new Date(u)},getWhatDay:function(e,n){return new Date(k(e).getTime()+(n&&!isNaN(n)?864e5*n:0))},getDaysOfMonth:function(e,n){return Math.floor((H(e,n,"last").getTime()-H(e,n,"first").getTime())/864e5)+1},getDateDiff:function(e,n,t){var r={done:!1},i=k(e).getTime(),o=n?k(n).getTime():new Date;if(i<o){var u,a=o-i,s=t&&t.length>0?t:fe;r.done=!0;for(var c=0,f=s.length;c<f;c++)a>=(u=s[c])[1]?c===f-1?r[u[0]]=a||0:(r[u[0]]=Math.floor(a/u[1]),a-=r[u[0]]*u[1]):r[u[0]]=0}return r}},ye=null;"undefined"!=typeof location&&(ye=location);var he={parseUrl:U,getBaseURL:function(){if(ye){var e=ye.pathname,n=re.lastIndexOf(e,"/")+1;return R()+(n===e.length?e:e.substring(0,n))}return""},locat:function(){return ye?U(ye.href):{}}},pe={getRandom:function(e,n){return e>=n?e:(e>>=0)+Math.round(Math.random()*((n||9)-e))},arrayMin:$,min:$,arrayMax:q,max:q,commafy:function(e,n){var t=re.objectAssign({spaceNumber:3,separator:",",fixed:0},n),r=parseFloat((""+e).replace(/,/g,"")||0).toFixed(t.fixed).split(".");return r[0].replace(new RegExp("(?=(?!(\\b))(\\d{"+t.spaceNumber+"})+$)","g"),t.separator)+(r[1]?"."+r[1]:"")},toNumber:J,stringToNumber:J},ge={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},de={};re.arrayEach(re.objectKeys(ge),function(e){de[ge[e]]=e});var me={escape:W(ge),unescape:W(de)},ve={};return re.objectAssign(ve,B,re,ie,ae,le,he,pe,me),e.mixin=function(n){ve.objectEach(n,function(n,t){e[t]=-1==="cookie".indexOf(t)&&ve.isFunction(n)?function(){var t=n.apply(e.$context,arguments);return e.$context=null,t}:n})},e.mixin(ve),e}); | ||
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):e.XEUtils=n()}(this,function(){"use strict";function e(){}function n(e){var n=[];return oe.isArray(e)&&oe.arrayEach(e,function(e){n.includes(e)||n.push(e)}),n}function t(){for(var e=[],t=0,r=arguments.length;t<r;t++)e=e.concat(arguments[t]);return n(e)}function r(e,n,t){return oe.isArray(e)?e.sort(n?oe.isFunction(n)?n.bind(t||this):function(e,t){return e[n]>t[n]?1:-1}:function(e,n){return e>n?1:-1}):e}function i(e){for(var n=[],t=oe.objectValues(e),r=t.length-1;r>=0;r--){var i=r>0?de.getRandom(0,r):0;n.push(t[i]),t.splice(i,1)}return n}function o(e,n){var t=i(e);return 1===arguments.length?t[0]:(n<t.length&&(t.length=n||0),t)}function a(e,n,t){if(e){if(t=t||this,oe.isArray(e))return e.some(n,t);for(var r in e)if(e.hasOwnProperty(r)&&n.call(t,e[r],r,e))return!0}return!1}function u(e,n,t){if(e){if(t=t||this,oe.isArray(e))return e.every(n,t);for(var r in e)if(e.hasOwnProperty(r)&&!n.call(t,e[r],r,e))return!1}return!0}function s(e,n,t){if(e){if(t=t||this,oe.isArray(e))return e.filter(n,t);var r={};return oe.each(e,function(i,o){n.call(t,i,o,e)&&(r[o]=i)}),r}return[]}function c(e,n,t){if(e){if(t=t||this,oe.isArray(e))return e.find(n,t);for(var r in e)if(e.hasOwnProperty(r)&&n.call(t,e[r],r,e))return e[r]}}function f(e,n,t){var r=[];if(e){if(t=t||this,oe.isArray(e))return e.map(n,t);oe.each(e,function(){r.push(n.apply(t,arguments))})}return r}function l(e,n,t){var r=0;return t=t||this,oe.each(e,n?oe.isFunction(n)?function(){r+=n.apply(t,arguments)}:function(e,t){r+=e[n]}:function(e,n){r+=e}),r}function h(e){return"function"==typeof e}function y(e){return"string"==typeof e}function p(e){return"number"==typeof e}function g(e){return"object"==typeof e}function d(e){return!!e&&e.constructor===Object}function m(e){return"[object Date]"===K.call(e)}function v(e){return"undefined"!=typeof Symbol&&Symbol.isSymbol?Symbol.isSymbol(e):"symbol"==typeof e}function b(e){return function(n,t){if(n){if(y(n)||L(n))return e(n,t);for(var r in n)if(t===n[r])return r}return-1}}function S(e,n){return-1!==X(e,n)}function M(e,n,t){for(var r,i=1,o=n.length;i<o;i++)r=n[i],E(j(n[i]),function(n){e[n]=t?A(r[n],t):r[n]});return e}function j(e){var n=[];if(e){if(Object.keys)return Object.keys(e);N(e,function(e,t){n.push(t)})}return n}function x(e){if(Object.values)return e?Object.values(e):[];var n=[];return E(j(e),function(t){n.push(e[t])}),n}function D(e){if(Object.entries)return e?Object.entries(e):[];var n=[];return E(j(e),function(t){n.push([t,e[t]])}),n}function O(e){return x(e)[0]}function w(e){var n=x(e);return n[n.length-1]}function N(e,n,t){for(var r in e)e.hasOwnProperty(r)&&n.call(t||this,e[r],r,e)}function E(e,n,t){for(var r=0,i=e.length||0;r<i;r++)n.call(t||this,e[r],r,e)}function F(e,n,t){return e?L(e)?h(e.forEach)?e.forEach(n,t||this):E(e,n,t||this):N(e,n,t||this):e}function T(n){return d(n)?function(e){var n={};return F(e,function(e,t){n[t]=T(e)}),n}(n):L(n)?function(n){return e.arrayMap(n,T)}(n):n}function A(e,n){return e?n?T(e):_(d(e)?{}:[],e):e}function I(e,n){var t=parseFloat(n),r=new Date,i=r.getTime();switch(e){case"y":return ye.getWhatYear(r,t).getTime();case"M":return ye.getWhatMonth(r,t).getTime();case"d":return ye.getWhatDay(r,t).getTime();case"H":return i+60*t*60*1e3;case"m":return i+60*t*1e3;case"s":return i+1e3*t}return i}function H(e){return(oe.isDate(e)?e:new Date(e)).toUTCString()}function k(e,n,t){var r=[],i="undefined"!=typeof document;if(this&&this.$context&&(this.$context=null),oe.isArray(e)?r=e:arguments.length>1?r=[oe.objectAssign({name:e,value:n},t)]:oe.isObject(e)&&(r=[e]),!(r.length>0)){var o={};return i&&document.cookie&&oe.arrayEach(document.cookie.split("; "),function(e){var n=e.indexOf("=");o[ue(e.substring(0,n))]=ue(e.substring(n+1)||"")}),1===arguments.length?o[e]:o}i&&oe.arrayEach(r,function(e){var n=oe.objectAssign({},e),t=[];if(n.name){var r=n.expires;t.push(se(n.name)+"="+se(oe.isObject(n.value)?JSON.stringify(n.value):n.value)),r&&(isNaN(r)?n.expires=r.replace(/^([0-9]+)(y|M|d|H|m|s)$/,function(e,n,t){return H(I(t,n))}):/^[0-9]{11,13}$/.test(r)||oe.isDate(r)?n.expires=H(r):n.expires=H(I("d",r))),oe.arrayEach(["expires","path","domain","secure"],function(e){void 0!==n[e]&&t.push(n[e]&&"secure"===e?e:e+"="+n[e])})}document.cookie=t.join("; ")})}function P(e,n){if(e){if(oe.isDate(e))return e;if(!isNaN(e))return new Date(e);if(oe.isString(e)){n=n||"yyyy-MM-dd HH:mm:ss.SSS";var t=[];return oe.arrayEach(le,function(r){for(var i,o,a=0,u=r.rules,s=u.length;a<s;a++){if(i=u[a],(o=n.indexOf(i[0]))>-1){t.push(parseFloat(e.substring(o,o+i[1])||0)+(r.offset||0));break}a===s-1&&t.push(0)}}),new Date(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}}return"Invalid Date"}function R(e,n,t){var r=P(e),i=n&&!isNaN(n)?n:0,o=r.getHours(),a=r.getMinutes(),u=r.getSeconds(),s=r.getMilliseconds();if("first"===t){var c=r.getFullYear(),f=r.getMonth();return(f+=i)<0?new Date(c-Math.ceil((f=Math.abs(f))/12),12-(f%12||1),1,o,a,u,s):new Date(c+Math.floor(f/12),f%12,1,o,a,u,s)}if("last"===t)return new Date(R(r,i+1,"first").getTime()-864e5);var l=r.getDate(),h=R(r,i,"first"),y=h.getMonth();for(h.setDate(l);y<h.getMonth();)h.setDate(--l);return h}function U(e){var n={},t=e.split("?")[1]||"";return t&&oe.arrayEach(t.split("&"),function(e){var t=e.split("=");n[decodeURIComponent(t[0])]=decodeURIComponent(t[1]||"")}),n}function W(){return pe?pe.origin||pe.protocol+"//"+pe.host:""}function Y(e){var n=""+e;0===n.indexOf("/")&&(n=W()+n);var t=n.replace(/#.*/,"").match(/(\?.*)/),r={href:n,hash:"",host:"",hostname:"",protocol:"",port:"",search:t?t[1]:""};r.path=n.replace(/^([a-z0-9.+-]*:)\/\//,function(e,n){return r.protocol=n,""}).replace(/^([a-z0-9.+-]*)(:\d+)?\//,function(e,n,t){var i=t||"";return r.port=i.replace(":",""),r.hostname=n,r.host=n+i,"/"}).replace(/(#.*)/,function(e,n){return r.hash=n,""});var i=r.hash.match(/#((.*)\?|(.*))/);return r.pathname=r.path.replace(/(\?|#.*).*/,""),r.origin=r.protocol+"//"+r.host,r.hashKey=i?i[2]||"":"",r.hashQuery=U(r.hash),r.searchQuery=U(r.search),r}function $(e,n){return oe.isFunction(n)?z.arraySort(z.arrayMap(e,n,this)):z.arraySort(e,n)}function C(){return $.apply(this,arguments)[0]}function q(){return $.apply(this,arguments).reverse()[0]}function J(e){if(e){var n=parseFloat(e);return isNaN(n)?0:n}return 0}function B(e){var n=new RegExp("(?:"+oe.objectKeys(e).join("|")+")","g");return function(t){return String(t||"").replace(n,function(n){return e[n]})}}e.version="1.5.26";var z={arrayUniq:n,uniq:n,arrayUnion:t,union:t,arraySort:r,sort:r,arrayShuffle:i,shuffle:i,arraySample:o,sample:o,arraySome:a,some:a,arrayEvery:u,every:u,arrayFilter:s,filter:s,arrayFind:c,find:c,arrayMap:f,map:f,arraySum:l,sum:l},K=Object.prototype.toString,L=Array.isArray||function(e){return"[object Array]"===K.call(e)},Q=Number.isInteger,V=0,X=b(function(e,n){if(e.indexOf)return e.indexOf(n);for(var t=0,r=e.length;t<r;t++)if(n===e[t])return t}),G=b(function(e,n){if(e.lastIndexOf)return e.lastIndexOf(n);for(var t=e.length-1;t>=0;t--)if(n===e[t])return t;return-1}),Z=S,_=function(e){if(e){var n=arguments;if(!0!==e)return Object.assign?Object.assign.apply(Object,n):M(e,n);if(n.length>1)return e=L(e[1])?[]:{},M(e,n,!0)}return e},ee=j,ne=x,te=D,re=O,ie=w,oe={isNaN:isNaN,isFinite:isFinite,isArray:L,isFloat:function(e){return null!==e&&!isNaN(e)&&!Q(e)},isInteger:Q,isFunction:h,isBoolean:function(e){return"boolean"==typeof e},isString:y,isNumber:p,isRegExp:function(e){return"[object RegExp]"===K.call(e)},isObject:g,isPlainObject:d,isDate:m,isError:function(e){return"[object Error]"===K.call(e)},isTypeError:function(e){return!!e&&e.constructor===TypeError},isEmpty:function(e){if(0===e||!p(e)){for(var n in e)return!1;return!0}return!1},isNull:function(e){return null===e},isSymbol:v,isArguments:function(e){return"[object Arguments]"===K.call(e)},isElement:function(e){return e&&y(e.nodeName)&&p(e.nodeType)},isDocument:function(e){return e&&9===e.nodeType&&"undefined"!=typeof document},isWindow:function(e){return e&&e===e.window&&"undefined"!=typeof window},isFormData:function(e){return"undefined"!=typeof FormData&&e instanceof FormData},isLeapYear:function(n){var t=(n?e.stringToDate(n):new Date).getFullYear();return t%4==0&&(t%100!=0||t%400==0)},getType:function(e){return null===e?""+e:v(e)?"symbol":m(e)?"date":L(e)?"array":typeof e},uniqueId:function(){return++V},getSize:function(e){var n=0;return y(e)||L(e)?e.length:(F(e,function(){n++}),n)},lastIndexOf:G,includes:S,contains:Z,objectAssign:_,assign:_,extend:_,stringToJson:function(e){if(g(e))return e;if(y(e))try{return JSON.parse(e)}catch(e){console.error(e)}return{}},jsonToString:function(e){if(g(e))try{return JSON.stringify(e)}catch(e){console.error(e)}return e?""+e:""},objectKeys:j,keys:ee,objectValues:x,values:ne,objectEntries:D,entries:te,arrayFirst:O,first:re,arrayLast:w,last:ie,objectEach:N,arrayEach:E,each:F,groupBy:function(e,n,t){var r,i,o={};return e&&(y(n)?(i=n,n=null):n=h(n)?n.bind(t||this):i=null,F(e,function(t,a){r=n?n(t,a,e):i?t[i]:t,o[r]?o[r].push(t):o[r]=[t]})),o},objectMap:function(e,n,t){var r={};return F(e,function(i,o){r[o]=n.call(t||this,i,o,e)}),r},clone:A},ae={browse:function(){var e={isNode:!1,isMobile:!1,isPC:!1};if("undefined"==typeof window&&"undefined"!=typeof process)e.nodeJS=!0;else if(e.isMobile=function(){for(var e=["Android","webOS","iPhone","iPad","iPod","SymbianOS","BlackBerry","Windows Phone"],n=navigator.userAgent,t=0;t<e.length;t++)if(n.indexOf(e[t])>0)return!0;return!1}(),e.isPC=!e.isMobile,"undefined"!=typeof document){var n=document.body||document.documentElement;oe.arrayEach(["webkit","khtml","moz","ms","o"],function(t){e["-"+t]=!!n[t+"MatchesSelector"]})}return e}},ue=decodeURIComponent,se=encodeURIComponent;oe.objectAssign(k,{setItem:function(e,n,t){k(e,n,t)},getItem:function(e){return k(e)},removeItem:function(e){k(e,null,{expires:-1})},getJSON:function(){return k()}});var ce={cookie:k},fe=Date.now||function(){return(new Date).getTime()},le=[{rules:[["yyyy",4],["yyy",3],["yy",2]]},{rules:[["MM",2],["M",1]],offset:-1},{rules:[["dd",2],["d",1]]},{rules:[["HH",2],["H",1]]},{rules:[["mm",2],["m",1]]},{rules:[["ss",2],["s",1]]},{rules:[["SSS",3],["SS",2],["S",1]]}],he=[["yyyy",31536e6],["MM",2592e6],["dd",864e5],["HH",36e5],["mm",6e4],["ss",1e3],["S",0]],ye={timestamp:fe,now:fe,stringToDate:P,dateToString:function(e,n){if(e){if(e=P(e),oe.isDate(e)){var t=["日","一","二","三","四","五","六"],r={"q+":Math.floor((e.getMonth()+3)/3),"M+":e.getMonth()+1,"E+":e.getDay(),"d+":e.getDate(),"H+":e.getHours(),"m+":e.getMinutes(),"s+":e.getSeconds(),S:e.getMilliseconds()},i=String(n||"yyyy-MM-dd HH:mm:ss").replace(/(y+)/,function(n){return(""+e.getFullYear()).substr(4-n.length)});for(var o in r)if(r.hasOwnProperty(o)){var a=""+r[o];i=i.replace(new RegExp("("+o+")"),function(e){return"q+"===o||"E+"===o?t[a]:1===e.length?a:("00"+a).substr(a.length)})}return i}return e}return""},getWhatYear:function(e,n){var t=P(e);if(n){var r=n&&!isNaN(n)?n:0;t.setFullYear(t.getFullYear()+r)}return t},getWhatMonth:R,getWhatWeek:function(e,n,t){var r=P(e),i=Number(/^[0-7]$/.test(t)?t:r.getDay()),o=r.getDay(),a=r.getTime()+864e5*((0===i?7:i)-(0===o?7:o));return n&&!isNaN(n)&&(a+=6048e5*n),new Date(a)},getWhatDay:function(e,n){var t=P(e);return n?new Date(t.getTime()+(n&&!isNaN(n)?864e5*n:0)):t},getDaysOfMonth:function(e,n){return Math.floor((R(e,n,"last").getTime()-R(e,n,"first").getTime())/864e5)+1},getDateDiff:function(e,n,t){var r={done:!1},i=P(e).getTime(),o=n?P(n).getTime():new Date;if(i<o){var a,u=o-i,s=t&&t.length>0?t:he;r.done=!0;for(var c=0,f=s.length;c<f;c++)u>=(a=s[c])[1]?c===f-1?r[a[0]]=u||0:(r[a[0]]=Math.floor(u/a[1]),u-=r[a[0]]*a[1]):r[a[0]]=0}return r}},pe=null;"undefined"!=typeof location&&(pe=location);var ge={parseUrl:Y,getBaseURL:function(){if(pe){var e=pe.pathname,n=oe.lastIndexOf(e,"/")+1;return W()+(n===e.length?e:e.substring(0,n))}return""},locat:function(){return pe?Y(pe.href):{}}},de={getRandom:function(e,n){return e>=n?e:(e>>=0)+Math.round(Math.random()*((n||9)-e))},arrayMin:C,min:C,arrayMax:q,max:q,commafy:function(e,n){var t=oe.objectAssign({spaceNumber:3,separator:",",fixed:0},n),r=parseFloat((""+e).replace(/,/g,"")||0).toFixed(t.fixed).split(".");return r[0].replace(new RegExp("(?=(?!(\\b))(\\d{"+t.spaceNumber+"})+$)","g"),t.separator)+(r[1]?"."+r[1]:"")},toNumber:J,stringToNumber:J},me={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},ve={};oe.arrayEach(oe.objectKeys(me),function(e){ve[me[e]]=e});var be={escape:B(me),unescape:B(ve)},Se={};return oe.objectAssign(Se,z,oe,ae,ce,ye,ge,de,be),e.mixin=function(n){Se.objectEach(n,function(n,t){e[t]=-1==="cookie".indexOf(t)&&Se.isFunction(n)?function(){var t=n.apply(e.$context,arguments);return e.$context=null,t}:n})},e.mixin(Se),e}); |
{ | ||
"name": "xe-utils", | ||
"version": "1.5.25", | ||
"version": "1.5.26", | ||
"description": "XEUtils 函数库", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -553,6 +553,15 @@ # XEUtils 函数库 | ||
``` | ||
### getWhatMonth ( date, mode, month ) 返回前几个月或后几个月的日期,可以指定月初或月末,默认当前 | ||
### getWhatYear ( date, year ) 返回前几年或后几年的日期 | ||
```JavaScript | ||
import XEUtils from 'xe-utils' | ||
XEUtils.getWhatYear(new Date(), -1) // Mon Nov 20 2017 00:00:00 GMT+0800 (中国标准时间) | ||
XEUtils.getWhatYear(1513735830000, -1) // Tue Dec 20 2016 10:10:30 GMT+0800 (中国标准时间) | ||
XEUtils.getWhatYear('2017-12-20', -1) // Tue Dec 20 2016 00:00:00 GMT+0800 (中国标准时间) | ||
XEUtils.getWhatYear('2017-12-20', 1) // Thu Dec 20 2018 00:00:00 GMT+0800 (中国标准时间) | ||
``` | ||
### getWhatMonth ( date, mode, month ) 返回前几月或后几月的日期,可以指定月初或月末,默认当前 | ||
```JavaScript | ||
import XEUtils from 'xe-utils' | ||
XEUtils.getWhatMonth(new Date(), -1) // Mon Nov 20 2017 00:00:00 GMT+0800 (中国标准时间) | ||
@@ -738,3 +747,23 @@ XEUtils.getWhatMonth(1513735830000, -1) // Mon Nov 20 2017 00:00:00 GMT+0800 (中国标准时间) | ||
XEUtils.cookie('name', 'value') | ||
// 添加并设置domain/path/secure/expires 7天后过期 | ||
// 指定时间戳 10 秒后过期 | ||
XEUtils.cookie('name', 'value', {expires: '10s'}) | ||
// 指定时间戳 1 分钟后过期 | ||
XEUtils.cookie('name', 'value', {expires: '1m'}) | ||
// 指定时间戳 1 小时后过期 | ||
XEUtils.cookie('name', 'value', {expires: '1H'}) | ||
// 指定时间戳 1 天后过期 | ||
XEUtils.cookie('name', 'value', {expires: '1d'}) | ||
// 指定时间戳 1 月后过期 | ||
XEUtils.cookie('name', 'value', {expires: '1M'}) | ||
// 指定时间戳 1 年后过期 | ||
XEUtils.cookie('name', 'value', {expires: '1y'}) | ||
// 指定时间戳后过期 | ||
XEUtils.cookie('name', 'value', {expires: 1525541938031}) | ||
// 指定日期过期 | ||
XEUtils.cookie('name', 'value', {expires: new Date()}) | ||
// 指定 UTCString 格式日期 | ||
XEUtils.cookie('name', 'value', {expires: new Date().toUTCString()}) | ||
// 指定数值 1 天后过期 | ||
XEUtils.cookie('name', 'value', {expires: 1}) | ||
// 完整设置domain/path/secure/expires | ||
XEUtils.cookie('name', 'value', {domain: 'xxx.com', path: '/', expires: 7, secure: true}) | ||
@@ -748,2 +777,11 @@ | ||
XEUtils.cookie([{name: 'name', value: 'value', domain: 'xxx.com', path: '/', expires: 7, secure: true}]) | ||
// 添加 | ||
XEUtils.cookie.setItem('name', 'value') | ||
// 根据name获取 | ||
XEUtils.cookie.getItem('name') | ||
// 删除 | ||
XEUtils.cookie.removeItem('name') | ||
// 获取所有 | ||
XEUtils.cookie.getJSON() | ||
``` | ||
@@ -750,0 +788,0 @@ |
@@ -5,4 +5,4 @@ 'use strict' | ||
XEUtils.version = '1.5.25' | ||
XEUtils.version = '1.5.26' | ||
module.exports = XEUtils |
'use strict' | ||
var baseExports = require('./base') | ||
var dateExports = require('./date') | ||
@@ -8,2 +9,21 @@ var decode = decodeURIComponent | ||
function toCookieUnitTime (unit, expires) { | ||
var num = parseFloat(expires) | ||
var nowdate = new Date() | ||
var time = nowdate.getTime() | ||
switch (unit) { | ||
case 'y': return dateExports.getWhatYear(nowdate, num).getTime() | ||
case 'M': return dateExports.getWhatMonth(nowdate, num).getTime() | ||
case 'd': return dateExports.getWhatDay(nowdate, num).getTime() | ||
case 'H': return time + num * 60 * 60 * 1000 | ||
case 'm': return time + num * 60 * 1000 | ||
case 's': return time + num * 1000 | ||
} | ||
return time | ||
} | ||
function toCookieUTCString (date) { | ||
return (baseExports.isDate(date) ? date : new Date(date)).toUTCString() | ||
} | ||
/** | ||
@@ -40,16 +60,16 @@ * cookie操作函数 | ||
if (opts.name) { | ||
var expires = opts.expires | ||
values.push(encode(opts.name) + '=' + encode(baseExports.isObject(opts.value) ? JSON.stringify(opts.value) : opts.value)) | ||
if (opts.expires) { | ||
if (isNaN(opts.expires)) { | ||
// UTCString | ||
opts.expires = opts.expires | ||
} else if (/^[0-9]{11,13}$/.test(opts.expires)) { | ||
// now | ||
opts.expires = new Date(opts.expires).toUTCString() | ||
} else if (baseExports.isDate(opts.expires)) { | ||
// Date | ||
opts.expires = opts.expires.toUTCString() | ||
if (expires) { | ||
if (isNaN(expires)) { | ||
// UTCString || Unit | ||
opts.expires = expires.replace(/^([0-9]+)(y|M|d|H|m|s)$/, function (text, num, unit) { | ||
return toCookieUTCString(toCookieUnitTime(unit, num)) | ||
}) | ||
} else if (/^[0-9]{11,13}$/.test(expires) || baseExports.isDate(expires)) { | ||
// Date || now | ||
opts.expires = toCookieUTCString(expires) | ||
} else { | ||
// day | ||
opts.expires = new Date(new Date().getTime() + parseFloat(opts.expires) * 86400000).toUTCString() | ||
opts.expires = toCookieUTCString(toCookieUnitTime('d', expires)) | ||
} | ||
@@ -79,4 +99,4 @@ } | ||
baseExports.objectAssign(cookie, { | ||
setItem: function (name, key) { | ||
cookie(name, key) | ||
setItem: function (name, key, options) { | ||
cookie(name, key, options) | ||
}, | ||
@@ -83,0 +103,0 @@ getItem: function (name) { |
@@ -102,9 +102,25 @@ 'use strict' | ||
/** | ||
* 返回前几个月或后几个月的日期 | ||
* 返回前几年或后几年的日期 | ||
* | ||
* @param {Date} date 日期或数字 | ||
* @param {String} month 月(默认0)、前几个月(-数值)、后几个月(数值) | ||
* @param {String} mode 获取哪天(默认null)、月初(first)、月末(last) | ||
* @param {String} year 年(默认当前年)、前几个年(数值)、后几个年(数值) | ||
* @return {Date} | ||
*/ | ||
function getWhatYear (date, year) { | ||
var currentDate = stringToDate(date) | ||
if (year) { | ||
var number = year && !isNaN(year) ? year : 0 | ||
currentDate.setFullYear(currentDate.getFullYear() + number) | ||
} | ||
return currentDate | ||
} | ||
/** | ||
* 返回前几月或后几月的日期 | ||
* | ||
* @param {Date} date 日期或数字 | ||
* @param {Number} month 月(默认当前月)、前几个月、后几个月 | ||
* @param {String} mode 获取哪天(默认当前天)、月初(first)、月末(last) | ||
* @return {Date} | ||
*/ | ||
function getWhatMonth (date, month, mode) { | ||
@@ -141,3 +157,3 @@ var currentDate = stringToDate(date) | ||
* @param {Date} date 日期 | ||
* @param {String} week 周(默认0)、前几周(-数值)、后几周(数值) | ||
* @param {Number} week 周(默认当前周)、前几周、后几周 | ||
* @param {Number} mode 星期天(默认0)、星期一(1)、星期二(2)、星期三(3)、星期四(4)、星期五(5)、星期六(6) | ||
@@ -162,7 +178,11 @@ * @return {Date} | ||
* @param {Date} date 日期或数字 | ||
* @param {String} day 天(默认0)、前几天(-数值)、后几天(数值) | ||
* @param {Number} day 天(默认当天)、前几天、后几天 | ||
* @return {Date} | ||
*/ | ||
function getWhatDay (date, day) { | ||
return new Date(stringToDate(date).getTime() + (day && !isNaN(day) ? day * 86400000 : 0)) | ||
var currentDate = stringToDate(date) | ||
if (day) { | ||
return new Date(currentDate.getTime() + (day && !isNaN(day) ? day * 86400000 : 0)) | ||
} | ||
return currentDate | ||
} | ||
@@ -174,3 +194,3 @@ | ||
* @param {Date} date 日期或数字 | ||
* @param {String} month 月(默认0)、前几个月(-数值)、后几个月(数值) | ||
* @param {Number} month 月(默认当月)、前几个月、后几个月 | ||
* @return {Number} | ||
@@ -223,2 +243,3 @@ */ | ||
dateToString: dateToString, | ||
getWhatYear: getWhatYear, | ||
getWhatMonth: getWhatMonth, | ||
@@ -225,0 +246,0 @@ getWhatWeek: getWhatWeek, |
121149
3.85%2943
2.62%808
4.94%