Common JavaScript function libraries based on prototype extensions

Source: Internet
Author: User
Tags date1

Copy codeThe Code is as follows:
/**
2 * retrieve array elements (prototype extension or overload)
3 * @ param {o} The retrieved element value
4 * @ type int
5 * @ returns element index
6 */
7 Array. prototype. contains = function (o ){
8 var index =-1;
9 for (var I = 0; I <this. length; I ++) {if (this [I] = o) {index = I; break ;}}
Return index;
}

/**
* Date formatting (prototype extension or overloading)
* The format is YYYY/yyyy/YY, indicating the year.
* MM/M month
* W/w weeks
* Dd/DD/d/D Date
* Hh/HH/h/H time
* Mm/m minutes
* Ss/SS/s/S seconds
* @ Param {formatStr} format template
* @ Type string
* @ Returns date string
*/
Date. prototype. format = function (formatStr ){
Var str = formatStr;
Var Week = ['day', 'yi', '2', '3', '4', '5', '6'];
Str = str. replace (/yyyy | YYYY/, this. getFullYear ());
Str = str. replace (/yy | YY/, (this. getYear () % 100)> 9? (This. getYear () % 100). toString (): '0' + (this. getYear () % 100 ));
Str = str. replace (/MM/, (this. getMonth () + 1)> 9? (This. getMonth () + 1). toString (): '0' + (this. getMonth () + 1 ));
Str = str. replace (/M/g, this. getMonth ());
Str = str. replace (/w | W/g, Week [this. getDay ()]);
Str = str. replace (/dd | DD/, this. getDate ()> 9? This. getDate (). toString (): '0' + this. getDate ());
Str = str. replace (/d | D/g, this. getDate ());
Str = str. replace (/hh | HH/, this. getHours ()> 9? This. getHours (). toString (): '0' + this. getHours ());
Str = str. replace (/h | H/g, this. getHours ());
Str = str. replace (/mm/, this. getMinutes ()> 9? This. getMinutes (). toString (): '0' + this. getMinutes ());
Str = str. replace (/m/g, this. getMinutes ());
Str = str. replace (/ss | SS/, this. getSeconds ()> 9? This. getSeconds (). toString (): '0' + this. getSeconds ());
Str = str. replace (/s | S/g, this. getSeconds ());
Return str;
}

/**
* Compare date difference (prototype extension or overload)
* @ Param {strInterval} date type: 'y, m, d, h, n, s, W'
* @ Param {dtEnd} is a string in the date or valid date format.
* @ Type int
* @ Returns comparison result
*/
Date. prototype. dateDiff = function (strInterval, dtEnd ){
Var dtStart = this;
If (typeof dtEnd = 'string') {// if the string is converted to the date type
DtEnd = StringToDate (dtEnd );
}
Switch (strInterval ){
Case's ': return parseInt (dtEnd-dtStart)/1000 );
Case 'N': return parseInt (dtEnd-dtStart)/60000 );
Case 'H': return parseInt (dtEnd-dtStart)/3600000 );
Case 'D': return parseInt (dtEnd-dtStart)/86400000 );
Case 'W': return parseInt (dtEnd-dtStart)/(86400000*7 ));
Case 'M': return (dtEnd. getMonth () + 1) + (dtEnd. getFullYear ()-dtStart. getFullYear () * 12)-(dtStart. getMonth () + 1 );
Case 'y': return dtEnd. getFullYear ()-dtStart. getFullYear ();
}
}

/**
* Date calculation (prototype extension or heavy load)
* @ Param {strInterval} date type: 'y, m, d, h, n, s, W'
* @ Param {Number} quantity
* @ Type Date
* @ Returns: date after calculation
*/
Date. prototype. dateAdd = function (strInterval, Number ){
Var dtTmp = this;
Switch (strInterval ){
Case's ': return new Date (Date. parse (dtTmp) + (1000 * Number ));
Case 'N': return new Date (Date. parse (dtTmp) + (60000 * Number ));
Case 'H': return new Date (Date. parse (dtTmp) + (3600000 * Number ));
Case 'D': return new Date (Date. parse (dtTmp) + (86400000 * Number ));
Case 'W': return new Date (Date. parse (dtTmp) + (86400000*7) * Number ));
Case 'q': return new Date (dtTmp. getFullYear (), (dtTmp. getMonth () + Number * 3, dtTmp. getDate (), dtTmp. getHours (), dtTmp. getMinutes (), dtTmp. getSeconds ());
Case 'M': return new Date (dtTmp. getFullYear (), (dtTmp. getMonth () + Number, dtTmp. getDate (), dtTmp. getHours (), dtTmp. getMinutes (), dtTmp. getSeconds ());
Case 'y': return new Date (dtTmp. getFullYear () + Number), dtTmp. getMonth (), dtTmp. getDate (), dtTmp. getHours (), dtTmp. getMinutes (), dtTmp. getSeconds ());
}
}

/**
* Get date data information (prototype extension or heavy load)
* @ Param {interval} date type: 'y, m, d, h, n, s, W'
* @ Type int
* @ Returns specifies the date part.
*/
Date. prototype. datePart = function (interval ){
Var myDate = this;
Var partStr = '';
Var Week = ['day', 'yi', '2', '3', '4', '5', '6'];
Switch (interval)
{
Case 'y': partStr = myDate. getFullYear (); break;
Case 'M': partStr = myDate. getMonth () + 1; break;
Case 'D': partStr = myDate. getDate (); break;
Case 'W': partStr = Week [myDate. getDay ()]; break;
Case 'ww ': partStr = myDate. WeekNumOfYear (); break;
Case 'H': partStr = myDate. getHours (); break;
Case 'N': partStr = myDate. getMinutes (); break;
Case's ': partStr = myDate. getSeconds (); break;
}
Return partStr;
}

/**
* Divide dates into arrays (prototype extension or overload)
* @ Type array
* @ Returns date Array
*/
Date. prototype. toArray = function (){
Var myDate = this;
Var myArray = Array ();
MyArray [0] = myDate. getFullYear ();
MyArray [1] = myDate. getMonth () + 1;
MyArray [2] = myDate. getDate ();
MyArray [3] = myDate. getHours ();
MyArray [4] = myDate. getMinutes ();
MyArray [5] = myDate. getSeconds ();
Return myArray;
}

/**
* Get the number of days of the current month (prototype extension or overload)
* @ Type int
* @ Returns days
*/
Date. prototype. daysOfMonth = function (){
Var myDate = this;
Var ary = myDate. toArray ();
Var date1 = (new Date (ary [0], ary [1] + 1, 1 ));
Var date2 = date1.dateAdd ('M', 1 );
Var result = daysDiff (date1.format ('yyyy-MM-dd'), date2.format ('yyyy-MM-dd '));
Return result;
}

/**
* Determine a leap year (prototype extension or heavy load)
* @ Type boolean
* @ Returns whether it is a leap year true/false
*/
Date. prototype. isLeapYear = function (){
Return (0 = this. getYear () % 4 & (this. getYear () % 100! = 0) | (this. getYear () % 400 = 0 )));
}

/**
* Compare the number of days between two dates (custom)
* @ Param {DateOne} date 1
* @ Param {DateOne} date 2
* @ Type int
* @ Returns comparison result
*/
Function daysDiff (DateOne, DateTwo)
{
Var OneMonth = DateOne. substring (5, DateOne. lastIndexOf ('-'));
Var OneDay = DateOne. substring (DateOne. length, DateOne. lastIndexOf ('-') + 1 );
Var OneYear = DateOne. substring (0, DateOne. indexOf ('-'));

Var TwoMonth = DateTwo. substring (5, DateTwo. lastIndexOf ('-'));
Var TwoDay = DateTwo. substring (DateTwo. length, DateTwo. lastIndexOf ('-') + 1 );
Var TwoYear = DateTwo. substring (0, DateTwo. indexOf ('-'));

Var cha = (Date. parse (OneMonth + '/' + OneDay + '/' + OneYear)-Date. parse (TwoMonth + '/' + TwoDay + '/' + TwoYear)/86400000 );
Return Math. abs (cha );
}

/**
* Date calculation (custom)
* @ Param {strInterval} date type: 'y, m, d, h, n, s, W'
* @ Param {Number} quantity
* @ Param {prmDate} original date
* @ Type Date
* @ Returns: date after calculation
*/
Function dateAdd (interval, number, prmDate ){
Number = parseInt (number );
If (typeof (prmDate) = "string "){
PrmDate = prmDate. split (/\ D /);
-- PrmDate [1];
Eval ("var prmDate = new Date (" + prmDate. join (",") + ")");
}
If (typeof (prmDate) = "object "){
Var prmDate = prmDate
}
Switch (interval ){
Case "y": prmDate. setFullYear (prmDate. getFullYear () + number); break;
Case "m": prmDate. setMonth (prmDate. getMonth () + number); break;
Case "d": prmDate. setDate (prmDate. getDate () + number); break;
Case "w": prmDate. setDate (prmDate. getDate () + 7 * number); break;
Case "h": prmDate. setHours (prmDate. getHour () + number); break;
Case "n": prmDate. setMinutes (prmDate. getMinutes () + number); break;
Case "s": prmDate. setSeconds (prmDate. getSeconds () + number); break;
Case "l": prmDate. setMilliseconds (prmDate. getMilliseconds () + number); break;
}
Return prmDate;
}

/**
* Get the string length (prototype extension or overload)
* @ Type int
* @ Returns String Length
*/
String. prototype. len = function (){
Var arr = this. match (/[^ \ x00-\ xff]/ig );
Return this. length + (arr = null? 0: arr. length );
}

/**
* Take the specified number of characters from the left of the string (prototype extension or overload)
* @ Param {num} gets the number
* @ Type string
* @ Returns matched string
*/
String. prototype. left = function (num, mode ){
If (! /\ D +/. test (num) return (this );
Var str = this. substr (0, num );
If (! Mode) return str;
Var n = str. len ()-str. length;
Num = num-parseInt (n/2 );
Return this. substr (0, num );
}

/**
* Right-click the string and select a specified number of characters (prototype extension or overload)
* @ Param {num} gets the number
* @ Type string
* @ Returns matched string
*/
String. prototype. right = function (num, mode ){
If (! /\ D +/. test (num) return (this );
Var str = this. substr (this. length-num );
If (! Mode) return str;
Var n = str. len ()-str. length;
Num = num-parseInt (n/2 );
Return this. substr (this. length-num );
}

/**
* String inclusion (prototype extension or overload)
* @ Param {string: str} The substring to be searched
* @ Param {bool: mode} whether to ignore case sensitivity
* @ Type int
* @ Returns matched count
*/
String. prototype. matchCount = function (str, mode ){
Return eval ("this. match (/(" + str + ")/g" + (mode? "I": "") + "). length ");
}

/**
* Remove left and right spaces (prototype extension or overload)
* @ Type string
* @ Returns the processed string
*/
String. prototype. trim = function (){
Return this. replace (/(^ \ s *) | (\ s * $)/g ,"");
}

/**
* Remove left spaces (prototype extension or overload)
* @ Type string
* @ Returns the processed string
*/
String. prototype. lTrim = function (){
Return this. replace (/(^ \ s *)/g ,"");
}

/**
* Remove right spaces (prototype extension or overload)
* @ Type string
* @ Returns the processed string
*/
String. prototype. rTrim = function (){
Return this. replace (/(\ s * $)/g ,"");
}

/**
* String Conversion to date type (prototype extension or overload)
* @ Type Date
* @ Returns date
*/
String. prototype. toDate = function (){
Var converted = Date. parse (this );
Var myDate = new Date (converted );
If (isNaN (myDate) {var arys = this. split ('-'); myDate = new Date (arys [0], -- arys [1], arys [2]);}
Return myDate;
}

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.