[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 /* 2 YUI 3.17.2 (build 9c3c78e) 3 Copyright 2014 Yahoo! Inc. All rights reserved. 4 Licensed under the BSD License. 5 http://yuilibrary.com/license/ 6 */ 7 8 YUI.add('datatype-date-math', function (Y, NAME) { 9 10 /** 11 * Date Math submodule. 12 * 13 * @module datatype-date 14 * @submodule datatype-date-math 15 * @for Date 16 */ 17 var LANG = Y.Lang; 18 19 Y.mix(Y.namespace("Date"), { 20 21 /** 22 * Checks whether a native JavaScript Date contains a valid value. 23 * @for Date 24 * @method isValidDate 25 * @param oDate {Date} Date in the month for which the number of days is desired. 26 * @return {Boolean} True if the date argument contains a valid value. 27 */ 28 isValidDate : function (oDate) { 29 if(LANG.isDate(oDate) && (isFinite(oDate)) && (oDate != "Invalid Date") && !isNaN(oDate) && (oDate != null)) { 30 return true; 31 } 32 else { 33 return false; 34 } 35 }, 36 37 /** 38 * Checks whether two dates correspond to the same date and time. 39 * @for Date 40 * @method areEqual 41 * @param aDate {Date} The first date to compare. 42 * @param bDate {Date} The second date to compare. 43 * @return {Boolean} True if the two dates correspond to the same 44 * date and time. 45 */ 46 areEqual : function (aDate, bDate) { 47 return (this.isValidDate(aDate) && this.isValidDate(bDate) && (aDate.getTime() == bDate.getTime())); 48 }, 49 50 /** 51 * Checks whether the first date comes later than the second. 52 * @for Date 53 * @method isGreater 54 * @param aDate {Date} The first date to compare. 55 * @param bDate {Date} The second date to compare. 56 * @return {Boolean} True if the first date is later than the second. 57 */ 58 isGreater : function (aDate, bDate) { 59 return (this.isValidDate(aDate) && this.isValidDate(bDate) && (aDate.getTime() > bDate.getTime())); 60 }, 61 62 /** 63 * Checks whether the first date comes later than or is the same as 64 * the second. 65 * @for Date 66 * @method isGreaterOrEqual 67 * @param aDate {Date} The first date to compare. 68 * @param bDate {Date} The second date to compare. 69 * @return {Boolean} True if the first date is later than or 70 * the same as the second. 71 */ 72 isGreaterOrEqual : function (aDate, bDate) { 73 return (this.isValidDate(aDate) && this.isValidDate(bDate) && (aDate.getTime() >= bDate.getTime())); 74 }, 75 76 77 /** 78 * Checks whether the date is between two other given dates. 79 * @for Date 80 * @method isInRange 81 * @param aDate {Date} The date to check 82 * @param bDate {Date} Lower bound of the range. 83 * @param cDate {Date} Higher bound of the range. 84 * @return {Boolean} True if the date is between the two other given dates. 85 */ 86 isInRange : function (aDate, bDate, cDate) { 87 return (this.isGreaterOrEqual(aDate, bDate) && this.isGreaterOrEqual(cDate, aDate)); 88 }, 89 90 /** 91 * Adds a specified number of days to the given date. 92 * @for Date 93 * @method addDays 94 * @param oDate {Date} The date to add days to. 95 * @param numDays {Number} The number of days to add (can be negative) 96 * @return {Date} A new Date with the specified number of days 97 * added to the original date. 98 */ 99 addDays : function (oDate, numDays) { 100 return new Date(oDate.getTime() + 86400000*numDays); 101 }, 102 103 104 /** 105 * Adds a specified number of months to the given date. 106 * @for Date 107 * @method addMonths 108 * @param oDate {Date} The date to add months to. 109 * @param numMonths {Number} The number of months to add (can be negative) 110 * @return {Date} A new Date with the specified number of months 111 * added to the original date. 112 */ 113 addMonths : function (oDate, numMonths) { 114 var newYear = oDate.getFullYear(); 115 var newMonth = oDate.getMonth() + numMonths; 116 117 newYear = Math.floor(newYear + newMonth / 12); 118 newMonth = (newMonth % 12 + 12) % 12; 119 120 var newDate = new Date (oDate.getTime()); 121 newDate.setFullYear(newYear); 122 newDate.setMonth(newMonth); 123 124 return newDate; 125 }, 126 127 /** 128 * Adds a specified number of years to the given date. 129 * @for Date 130 * @method addYears 131 * @param oDate {Date} The date to add years to. 132 * @param numYears {Number} The number of years to add (can be negative) 133 * @return {Date} A new Date with the specified number of years 134 * added to the original date. 135 */ 136 addYears : function (oDate, numYears) { 137 var newYear = oDate.getFullYear() + numYears; 138 var newDate = new Date(oDate.getTime()); 139 140 newDate.setFullYear(newYear); 141 return newDate; 142 }, 143 144 /** 145 * Lists all dates in a given month. 146 * @for Date 147 * @method listOfDatesInMonth 148 * @param oDate {Date} The date corresponding to the month for 149 * which a list of dates is required. 150 * @return {Array} An `Array` of `Date`s from a given month. 151 */ 152 listOfDatesInMonth : function (oDate) { 153 if (!this.isValidDate(oDate)) { 154 return []; 155 } 156 157 var daysInMonth = this.daysInMonth(oDate), 158 year = oDate.getFullYear(), 159 month = oDate.getMonth(), 160 output = []; 161 162 for (var day = 1; day <= daysInMonth; day++) { 163 output.push(new Date(year, month, day, 12, 0, 0)); 164 } 165 166 return output; 167 }, 168 169 /** 170 * Takes a native JavaScript Date and returns the number of days 171 * in the month that the given date belongs to. 172 * @for Date 173 * @method daysInMonth 174 * @param oDate {Date} Date in the month for which the number 175 * of days is desired. 176 * @return {Number} A number (either 28, 29, 30 or 31) of days 177 * in the given month. 178 */ 179 daysInMonth : function (oDate) { 180 if (!this.isValidDate(oDate)) { 181 return 0; 182 } 183 184 var mon = oDate.getMonth(); 185 var lengths = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; 186 187 if (mon != 1) { 188 return lengths[mon]; 189 } 190 else { 191 192 var year = oDate.getFullYear(); 193 if (year%400 === 0) { 194 return 29; 195 } 196 else if (year%100 === 0) { 197 return 28; 198 } 199 else if (year%4 === 0) { 200 return 29; 201 } 202 else { 203 return 28; 204 } 205 } 206 } 207 208 }); 209 210 Y.namespace("DataType"); 211 Y.DataType.Date = Y.Date; 212 213 214 }, '3.17.2', {"requires": ["yui-base"]});
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Thu Aug 11 10:00:09 2016 | Cross-referenced by PHPXref 0.7.1 |