123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- Ext.define('Ext.calendar.util.Date', {
-
- singleton: true,
-
- diffDays: function(start, end) {
- var day = 1000 * 60 * 60 * 24,
- clear = Ext.Date.clearTime,
- diff = clear(end, true).getTime() - clear(start, true).getTime();
-
- return Math.ceil(diff / day);
- },
- copyTime: function(fromDt, toDt) {
- var dt = Ext.Date.clone(toDt);
- dt.setHours(
- fromDt.getHours(),
- fromDt.getMinutes(),
- fromDt.getSeconds(),
- fromDt.getMilliseconds());
- return dt;
- },
- compare: function(dt1, dt2, precise) {
- if (precise !== true) {
- dt1 = Ext.Date.clone(dt1);
- dt1.setMilliseconds(0);
- dt2 = Ext.Date.clone(dt2);
- dt2.setMilliseconds(0);
- }
- return dt2.getTime() - dt1.getTime();
- },
- // private helper fn
- maxOrMin: function(max) {
- var dt = (max ? 0: Number.MAX_VALUE),
- i = 0,
- args = arguments[1],
- ln = args.length;
- for (; i < ln; i++) {
- dt = Math[max ? 'max': 'min'](dt, args[i].getTime());
- }
- return new Date(dt);
- },
- max: function() {
- return this.maxOrMin.apply(this, [true, arguments]);
- },
- min: function() {
- return this.maxOrMin.apply(this, [false, arguments]);
- },
-
- today: function() {
- return Ext.Date.clearTime(new Date());
- },
-
- /**
- * Adds time to the specified date and returns a new Date instance as the result (does not
- * alter the original date object). Time can be specified in any combination of milliseconds
- * to years, and the function automatically takes leap years and daylight savings into account.
- * Some syntax examples:<code><pre>
- var now = new Date();
- // Add 24 hours to the current date/time:
- var tomorrow = Extensible.Date.add(now, { days: 1 });
- // More complex, returning a date only with no time value:
- var futureDate = Extensible.Date.add(now, {
- weeks: 1,
- days: 5,
- minutes: 30,
- clearTime: true
- });
- </pre></code>
- * @param {Date} dt The starting date to which to add time
- * @param {Object} o A config object that can contain one or more of the following
- * properties, each with an integer value:
- *
- * - millis
- * - seconds
- * - minutes
- * - hours
- * - days
- * - weeks
- * - months
- * - years
- *
- * You can also optionally include the property "clearTime: true" which will perform all of the
- * date addition first, then clear the time value of the final date before returning it.
- * @return {Date} A new date instance containing the resulting date/time value
- */
- add : function(dt, o) {
- if (!o) {
- return dt;
- }
- var ExtDate = Ext.Date,
- dateAdd = ExtDate.add,
- newDt = ExtDate.clone(dt);
-
- if (o.years) {
- newDt = dateAdd(newDt, ExtDate.YEAR, o.years);
- }
- if (o.months) {
- newDt = dateAdd(newDt, ExtDate.MONTH, o.months);
- }
- if (o.weeks) {
- o.days = (o.days || 0) + (o.weeks * 7);
- }
- if (o.days) {
- newDt = dateAdd(newDt, ExtDate.DAY, o.days);
- }
- if (o.hours) {
- newDt = dateAdd(newDt, ExtDate.HOUR, o.hours);
- }
- if (o.minutes) {
- newDt = dateAdd(newDt, ExtDate.MINUTE, o.minutes);
- }
- if (o.seconds) {
- newDt = dateAdd(newDt, ExtDate.SECOND, o.seconds);
- }
- if (o.millis) {
- newDt = dateAdd(newDt, ExtDate.MILLI, o.millis);
- }
-
- return o.clearTime ? ExtDate.clearTime(newDt) : newDt;
- }
- });
|