aboutsummaryrefslogtreecommitdiff
path: root/contexts/data/lib/closure-library/closure/goog/i18n/timezone.js
diff options
context:
space:
mode:
Diffstat (limited to 'contexts/data/lib/closure-library/closure/goog/i18n/timezone.js')
-rw-r--r--contexts/data/lib/closure-library/closure/goog/i18n/timezone.js341
1 files changed, 0 insertions, 341 deletions
diff --git a/contexts/data/lib/closure-library/closure/goog/i18n/timezone.js b/contexts/data/lib/closure-library/closure/goog/i18n/timezone.js
deleted file mode 100644
index dc65711..0000000
--- a/contexts/data/lib/closure-library/closure/goog/i18n/timezone.js
+++ /dev/null
@@ -1,341 +0,0 @@
-// Copyright 2008 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 Functions to provide timezone information for use with
- * date/time format.
- */
-
-goog.provide('goog.i18n.TimeZone');
-
-goog.require('goog.array');
-goog.require('goog.date.DateLike');
-goog.require('goog.string');
-
-
-
-/**
- * TimeZone class implemented a time zone resolution and name information
- * source for client applications. The time zone object is initiated from
- * a time zone information object. Application can initiate a time zone
- * statically, or it may choose to initiate from a data obtained from server.
- * Each time zone information array is small, but the whole set of data
- * is too much for client application to download. If end user is allowed to
- * change time zone setting, dynamic retrieval should be the method to use.
- * In case only time zone offset is known, there is a decent fallback
- * that only use the time zone offset to create a TimeZone object.
- * A whole set of time zone information array was available under
- * http://go/js_locale_data. It is generated based on CLDR and
- * Olson time zone data base (through pytz), and will be updated timely.
- *
- * @constructor
- */
-goog.i18n.TimeZone = function() {
- /**
- * The standard time zone id.
- * @type {string}
- * @private
- */
- this.timeZoneId_;
-
-
- /**
- * The standard, non-daylight time zone offset, in minutes WEST of UTC.
- * @type {number}
- * @private
- */
- this.standardOffset_;
-
-
- /**
- * An array of strings that can have 2 or 4 elements. The first two elements
- * are the long and short names for standard time in this time zone, and the
- * last two elements (if present) are the long and short names for daylight
- * time in this time zone.
- * @type {Array.<string>}
- * @private
- */
- this.tzNames_;
-
-
- /**
- * This array specifies the Daylight Saving Time transitions for this time
- * zone. This is a flat array of numbers which are interpreted in pairs:
- * [time1, adjustment1, time2, adjustment2, ...] where each time is a DST
- * transition point given as a number of hours since 00:00 UTC, January 1,
- * 1970, and each adjustment is the adjustment to apply for times after the
- * DST transition, given as minutes EAST of UTC.
- * @type {Array.<number>}
- * @private
- */
- this.transitions_;
-};
-
-
-/**
- * The number of milliseconds in an hour.
- * @type {number}
- * @private
- */
-goog.i18n.TimeZone.MILLISECONDS_PER_HOUR_ = 3600 * 1000;
-
-
-/**
- * Indices into the array of time zone names.
- * @enum {number}
- */
-goog.i18n.TimeZone.NameType = {
- STD_SHORT_NAME: 0,
- STD_LONG_NAME: 1,
- DLT_SHORT_NAME: 2,
- DLT_LONG_NAME: 3
-};
-
-
-/**
- * This factory method creates a time zone instance. It takes either an object
- * containing complete time zone information, or a single number representing a
- * constant time zone offset. If the latter form is used, DST functionality is
- * not available.
- *
- * @param {number|Object} timeZoneData If this parameter is a number, it should
- * indicate minutes WEST of UTC to be used as a constant time zone offset.
- * Otherwise, it should be an object with these four fields:
- * <ul>
- * <li>id: A string ID for the time zone.
- * <li>std_offset: The standard time zone offset in minutes EAST of UTC.
- * <li>names: An array of four names (standard short name, standard long
- * name, daylight short name, daylight long, name)
- * <li>transitions: An array of numbers which are interpreted in pairs:
- * [time1, adjustment1, time2, adjustment2, ...] where each time is
- * a DST transition point given as a number of hours since 00:00 UTC,
- * January 1, 1970, and each adjustment is the adjustment to apply
- * for times after the DST transition, given as minutes EAST of UTC.
- * </ul>
- * @return {goog.i18n.TimeZone} A goog.i18n.TimeZone object for the given
- * time zone data.
- */
-goog.i18n.TimeZone.createTimeZone = function(timeZoneData) {
- if (typeof timeZoneData == 'number') {
- return goog.i18n.TimeZone.createSimpleTimeZone_(timeZoneData);
- }
- var tz = new goog.i18n.TimeZone();
- tz.timeZoneId_ = timeZoneData['id'];
- tz.standardOffset_ = -timeZoneData['std_offset'];
- tz.tzNames_ = timeZoneData['names'];
- tz.transitions_ = timeZoneData['transitions'];
- return tz;
-};
-
-
-/**
- * This factory method creates a time zone object with a constant offset.
- * @param {number} timeZoneOffsetInMinutes Offset in minutes WEST of UTC.
- * @return {goog.i18n.TimeZone} A time zone object with the given constant
- * offset. Note that the time zone ID of this object will use the POSIX
- * convention, which has a reversed sign ("Etc/GMT+8" means UTC-8 or PST).
- * @private
- */
-goog.i18n.TimeZone.createSimpleTimeZone_ = function(timeZoneOffsetInMinutes) {
- var tz = new goog.i18n.TimeZone();
- tz.standardOffset_ = timeZoneOffsetInMinutes;
- tz.timeZoneId_ =
- goog.i18n.TimeZone.composePosixTimeZoneID_(timeZoneOffsetInMinutes);
- var str = goog.i18n.TimeZone.composeUTCString_(timeZoneOffsetInMinutes);
- tz.tzNames_ = [str, str];
- tz.transitions_ = [];
- return tz;
-};
-
-
-/**
- * Generate a GMT-relative string for a constant time zone offset.
- * @param {number} offset The time zone offset in minutes WEST of UTC.
- * @return {string} The GMT string for this offset, which will indicate
- * hours EAST of UTC.
- * @private
- */
-goog.i18n.TimeZone.composeGMTString_ = function(offset) {
- var parts = ['GMT'];
- parts.push(offset <= 0 ? '+' : '-');
- offset = Math.abs(offset);
- parts.push(goog.string.padNumber(Math.floor(offset / 60) % 100, 2),
- ':', goog.string.padNumber(offset % 60, 2));
- return parts.join('');
-};
-
-
-/**
- * Generate a POSIX time zone ID for a constant time zone offset.
- * @param {number} offset The time zone offset in minutes WEST of UTC.
- * @return {string} The POSIX time zone ID for this offset, which will indicate
- * hours WEST of UTC.
- * @private
- */
-goog.i18n.TimeZone.composePosixTimeZoneID_ = function(offset) {
- if (offset == 0) {
- return 'Etc/GMT';
- }
- var parts = ['Etc/GMT', offset < 0 ? '-' : '+'];
- offset = Math.abs(offset);
- parts.push(Math.floor(offset / 60) % 100);
- offset = offset % 60;
- if (offset != 0) {
- parts.push(':', goog.string.padNumber(offset, 2));
- }
- return parts.join('');
-};
-
-
-/**
- * Generate a UTC-relative string for a constant time zone offset.
- * @param {number} offset The time zone offset in minutes WEST of UTC.
- * @return {string} The UTC string for this offset, which will indicate
- * hours EAST of UTC.
- * @private
- */
-goog.i18n.TimeZone.composeUTCString_ = function(offset) {
- if (offset == 0) {
- return 'UTC';
- }
- var parts = ['UTC', offset < 0 ? '+' : '-'];
- offset = Math.abs(offset);
- parts.push(Math.floor(offset / 60) % 100);
- offset = offset % 60;
- if (offset != 0) {
- parts.push(':', offset);
- }
- return parts.join('');
-};
-
-
-/**
- * Convert the contents of time zone object to a timeZoneData object, suitable
- * for passing to goog.i18n.TimeZone.createTimeZone.
- * @return {Object} A timeZoneData object (see the documentation for
- * goog.i18n.TimeZone.createTimeZone).
- */
-goog.i18n.TimeZone.prototype.getTimeZoneData = function() {
- return {
- 'id': this.timeZoneId_,
- 'std_offset': -this.standardOffset_, // note createTimeZone flips the sign
- 'names': goog.array.clone(this.tzNames_), // avoid aliasing the array
- 'transitions': goog.array.clone(this.transitions_) // avoid aliasing
- };
-};
-
-
-/**
- * Return the DST adjustment to the time zone offset for a given time.
- * While Daylight Saving Time is in effect, this number is positive.
- * Otherwise, it is zero.
- * @param {goog.date.DateLike} date The time to check.
- * @return {number} The DST adjustment in minutes EAST of UTC.
- */
-goog.i18n.TimeZone.prototype.getDaylightAdjustment = function(date) {
- var timeInMs = Date.UTC(date.getUTCFullYear(), date.getUTCMonth(),
- date.getUTCDate(), date.getUTCHours(),
- date.getUTCMinutes());
- var timeInHours = timeInMs / goog.i18n.TimeZone.MILLISECONDS_PER_HOUR_;
- var index = 0;
- while (index < this.transitions_.length &&
- timeInHours >= this.transitions_[index]) {
- index += 2;
- }
- return (index == 0) ? 0 : this.transitions_[index - 1];
-};
-
-
-/**
- * Return the GMT representation of this time zone object.
- * @param {goog.date.DateLike} date The date for which time to retrieve
- * GMT string.
- * @return {string} GMT representation string.
- */
-goog.i18n.TimeZone.prototype.getGMTString = function(date) {
- return goog.i18n.TimeZone.composeGMTString_(this.getOffset(date));
-};
-
-
-/**
- * Get the long time zone name for a given date/time.
- * @param {goog.date.DateLike} date The time for which to retrieve
- * the long time zone name.
- * @return {string} The long time zone name.
- */
-goog.i18n.TimeZone.prototype.getLongName = function(date) {
- return this.tzNames_[this.isDaylightTime(date) ?
- goog.i18n.TimeZone.NameType.DLT_LONG_NAME :
- goog.i18n.TimeZone.NameType.STD_LONG_NAME];
-};
-
-
-/**
- * Get the time zone offset in minutes WEST of UTC for a given date/time.
- * @param {goog.date.DateLike} date The time for which to retrieve
- * the time zone offset.
- * @return {number} The time zone offset in minutes WEST of UTC.
- */
-goog.i18n.TimeZone.prototype.getOffset = function(date) {
- return this.standardOffset_ - this.getDaylightAdjustment(date);
-};
-
-
-/**
- * Get the RFC representation of the time zone for a given date/time.
- * @param {goog.date.DateLike} date The time for which to retrieve the
- * RFC time zone string.
- * @return {string} The RFC time zone string.
- */
-goog.i18n.TimeZone.prototype.getRFCTimeZoneString = function(date) {
- var offset = -this.getOffset(date);
- var parts = [offset < 0 ? '-' : '+'];
- offset = Math.abs(offset);
- parts.push(goog.string.padNumber(Math.floor(offset / 60) % 100, 2),
- goog.string.padNumber(offset % 60, 2));
- return parts.join('');
-};
-
-
-/**
- * Get the short time zone name for given date/time.
- * @param {goog.date.DateLike} date The time for which to retrieve
- * the short time zone name.
- * @return {string} The short time zone name.
- */
-goog.i18n.TimeZone.prototype.getShortName = function(date) {
- return this.tzNames_[this.isDaylightTime(date) ?
- goog.i18n.TimeZone.NameType.DLT_SHORT_NAME :
- goog.i18n.TimeZone.NameType.STD_SHORT_NAME];
-};
-
-
-/**
- * Return the time zone ID for this time zone.
- * @return {string} The time zone ID.
- */
-goog.i18n.TimeZone.prototype.getTimeZoneId = function() {
- return this.timeZoneId_;
-};
-
-
-/**
- * Check if Daylight Saving Time is in effect at a given time in this time zone.
- * @param {goog.date.DateLike} date The time to check.
- * @return {boolean} True if Daylight Saving Time is in effect.
- */
-goog.i18n.TimeZone.prototype.isDaylightTime = function(date) {
- return this.getDaylightAdjustment(date) > 0;
-};
-