123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- // Copyright 2009 The Closure Library Authors. All Rights Reserved.
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS-IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
- /**
- * @fileoverview Locale independent date/time class.
- *
- */
- goog.provide('goog.date.UtcDateTime');
- goog.require('goog.date');
- goog.require('goog.date.Date');
- goog.require('goog.date.DateTime');
- goog.require('goog.date.Interval');
- /**
- * Class representing a date/time in GMT+0 time zone, without daylight saving.
- * Defaults to current date and time if none is specified. The get... and the
- * getUTC... methods are equivalent.
- *
- * @param {number|goog.date.DateLike=} opt_year Four digit UTC year or a
- * date-like object. If not set, the created object will contain the
- * date determined by goog.now().
- * @param {number=} opt_month UTC month, 0 = Jan, 11 = Dec.
- * @param {number=} opt_date UTC date of month, 1 - 31.
- * @param {number=} opt_hours UTC hours, 0 - 23.
- * @param {number=} opt_minutes UTC minutes, 0 - 59.
- * @param {number=} opt_seconds UTC seconds, 0 - 59.
- * @param {number=} opt_milliseconds UTC milliseconds, 0 - 999.
- * @constructor
- * @struct
- * @extends {goog.date.DateTime}
- */
- goog.date.UtcDateTime = function(
- opt_year, opt_month, opt_date, opt_hours, opt_minutes, opt_seconds,
- opt_milliseconds) {
- var timestamp;
- if (goog.isNumber(opt_year)) {
- timestamp = Date.UTC(
- opt_year, opt_month || 0, opt_date || 1, opt_hours || 0,
- opt_minutes || 0, opt_seconds || 0, opt_milliseconds || 0);
- } else {
- timestamp = opt_year ? opt_year.getTime() : goog.now();
- }
- this.date = new Date(timestamp);
- };
- goog.inherits(goog.date.UtcDateTime, goog.date.DateTime);
- /**
- * @param {number} timestamp Number of milliseconds since Epoch.
- * @return {!goog.date.UtcDateTime}
- */
- goog.date.UtcDateTime.fromTimestamp = function(timestamp) {
- var date = new goog.date.UtcDateTime();
- date.setTime(timestamp);
- return date;
- };
- /**
- * Creates a DateTime from a UTC datetime string expressed in ISO 8601 format.
- *
- * @param {string} formatted A date or datetime expressed in ISO 8601 format.
- * @return {goog.date.UtcDateTime} Parsed date or null if parse fails.
- */
- goog.date.UtcDateTime.fromIsoString = function(formatted) {
- var ret = new goog.date.UtcDateTime(2000);
- return goog.date.setIso8601DateTime(ret, formatted) ? ret : null;
- };
- /**
- * Clones the UtcDateTime object.
- *
- * @return {!goog.date.UtcDateTime} A clone of the datetime object.
- * @override
- */
- goog.date.UtcDateTime.prototype.clone = function() {
- var date = new goog.date.UtcDateTime(this.date);
- date.setFirstDayOfWeek(this.getFirstDayOfWeek());
- date.setFirstWeekCutOffDay(this.getFirstWeekCutOffDay());
- return date;
- };
- /** @override */
- goog.date.UtcDateTime.prototype.add = function(interval) {
- if (interval.years || interval.months) {
- var yearsMonths = new goog.date.Interval(interval.years, interval.months);
- goog.date.Date.prototype.add.call(this, yearsMonths);
- }
- var daysAndTimeMillis = 1000 *
- (interval.seconds +
- 60 * (interval.minutes + 60 * (interval.hours + 24 * interval.days)));
- this.date = new Date(this.date.getTime() + daysAndTimeMillis);
- };
- /** @override */
- goog.date.UtcDateTime.prototype.getTimezoneOffset = function() {
- return 0;
- };
- /** @override */
- goog.date.UtcDateTime.prototype.getFullYear =
- goog.date.DateTime.prototype.getUTCFullYear;
- /** @override */
- goog.date.UtcDateTime.prototype.getMonth =
- goog.date.DateTime.prototype.getUTCMonth;
- /** @override */
- goog.date.UtcDateTime.prototype.getDate =
- goog.date.DateTime.prototype.getUTCDate;
- /** @override */
- goog.date.UtcDateTime.prototype.getHours =
- goog.date.DateTime.prototype.getUTCHours;
- /** @override */
- goog.date.UtcDateTime.prototype.getMinutes =
- goog.date.DateTime.prototype.getUTCMinutes;
- /** @override */
- goog.date.UtcDateTime.prototype.getSeconds =
- goog.date.DateTime.prototype.getUTCSeconds;
- /** @override */
- goog.date.UtcDateTime.prototype.getMilliseconds =
- goog.date.DateTime.prototype.getUTCMilliseconds;
- /** @override */
- goog.date.UtcDateTime.prototype.getDay = goog.date.DateTime.prototype.getUTCDay;
- /** @override */
- goog.date.UtcDateTime.prototype.setFullYear =
- goog.date.DateTime.prototype.setUTCFullYear;
- /** @override */
- goog.date.UtcDateTime.prototype.setMonth =
- goog.date.DateTime.prototype.setUTCMonth;
- /** @override */
- goog.date.UtcDateTime.prototype.setDate =
- goog.date.DateTime.prototype.setUTCDate;
- /** @override */
- goog.date.UtcDateTime.prototype.setHours =
- goog.date.DateTime.prototype.setUTCHours;
- /** @override */
- goog.date.UtcDateTime.prototype.setMinutes =
- goog.date.DateTime.prototype.setUTCMinutes;
- /** @override */
- goog.date.UtcDateTime.prototype.setSeconds =
- goog.date.DateTime.prototype.setUTCSeconds;
- /** @override */
- goog.date.UtcDateTime.prototype.setMilliseconds =
- goog.date.DateTime.prototype.setUTCMilliseconds;
|