timezone.java
来自「《移动Agent技术》一书的所有章节源代码。」· Java 代码 · 共 1,010 行 · 第 1/5 页
JAVA
1,010 行
/*
* @(#)TimeZone.java 1.26 98/02/12
*
* (C) Copyright Taligent, Inc. 1996 - All Rights Reserved
* (C) Copyright IBM Corp. 1996 - All Rights Reserved
*
* Portions copyright (c) 1996 Sun Microsystems, Inc. All Rights Reserved.
*
* The original version of this source code and documentation is copyrighted
* and owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These
* materials are provided under terms of a License Agreement between Taligent
* and Sun. This technology is protected by multiple US and International
* patents. This notice and attribution to Taligent may not be removed.
* Taligent is a registered trademark of Taligent, Inc.
*
* Permission to use, copy, modify, and distribute this software
* and its documentation for NON-COMMERCIAL purposes and without
* fee is hereby granted provided that this copyright notice
* appears in all copies. Please refer to the file "copyright.html"
* for further important copyright and licensing information.
*
* SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
* THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
* TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
* ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
* DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
*
*/
package java.util;
import java.io.Serializable;
/**
* <code>TimeZone</code> represents a time zone offset, and also figures out daylight
* savings.
*
* <p>
* Typically, you get a <code>TimeZone</code> using <code>getDefault</code>
* which creates a <code>TimeZone</code> based on the time zone where the program
* is running. For example, for a program running in Japan, <code>getDefault</code>
* creates a <code>TimeZone</code> object based on Japanese Standard Time.
*
* <p>
* You can also get a <code>TimeZone</code> using <code>getTimeZone</code> along
* with a time zone ID. For instance, the time zone ID for the Pacific
* Standard Time zone is "PST". So, you can get a PST <code>TimeZone</code> object
* with:
* <blockquote>
* <pre>
* TimeZone tz = TimeZone.getTimeZone("PST");
* </pre>
* </blockquote>
* You can use <code>getAvailableIDs</code> method to iterate through
* all the supported time zone IDs. You can then choose a
* supported ID to get a favorite <code>TimeZone</code>.
*
* @see Calendar
* @see GregorianCalendar
* @see SimpleTimeZone
* @version 1.26 02/12/98
* @author Mark Davis, David Goldsmith, Chen-Lieh Huang, Alan Liu
*/
abstract public class TimeZone implements Serializable, Cloneable {
/**
* Gets the time zone offset, for current date, modified in case of
* daylight savings. This is the offset to add *to* UTC to get local time.
* @param era the era of the given date.
* @param year the year in the given date.
* @param month the month in the given date.
* Month is 0-based. e.g., 0 for January.
* @param day the day-in-month of the given date.
* @param dayOfWeek the day-of-week of the given date.
* @param milliseconds the millis in day in <em>standard</em> local time.
* @return the offset to add *to* GMT to get local time.
*/
abstract public int getOffset(int era, int year, int month, int day,
int dayOfWeek, int milliseconds);
/**
* Sets the base time zone offset to GMT.
* This is the offset to add *to* UTC to get local time.
* @param offsetMillis the given base time zone offset to GMT.
*/
abstract public void setRawOffset(int offsetMillis);
/**
* Gets unmodified offset, NOT modified in case of daylight savings.
* This is the offset to add *to* UTC to get local time.
* @return the unmodified offset to add *to* UTC to get local time.
*/
abstract public int getRawOffset();
/**
* Gets the ID of this time zone.
* @return the ID of this time zone.
*/
public String getID()
{
return ID;
}
/**
* Sets the time zone ID. This does not change any other data in
* the time zone object.
* @param ID the new time zone ID.
*/
public void setID(String ID)
{
this.ID = ID;
}
/**
* Queries if this time zone uses Daylight Savings Time.
* @return true if this time zone uses Daylight Savings Time,
* false, otherwise.
*/
abstract public boolean useDaylightTime();
/**
* Queries if the given date is in Daylight Savings Time in
* this time zone.
* @param date the given Date.
* @return true if the given date is in Daylight Savings Time,
* false, otherwise.
*/
abstract public boolean inDaylightTime(Date date);
/**
* Gets the TimeZone for the given ID.
* @param ID the given ID.
* @return a TimeZone, or null if the given ID is not recognized.
*/
public static synchronized TimeZone getTimeZone(String ID)
{
// Don't allow long IDs yet
TimeZone zone = (ID.length() <= 3) ? TimeZoneData.get(ID) : null;
return zone != null ? zone : TimeZoneData.get(DEFAULT_SHORT_ID);
}
/**
* Gets the available IDs according to the given time zone offset.
* @param rawOffset the given time zone GMT offset.
* @return an array of IDs, where the time zone for that ID has
* the specified GMT offset. For example, "America/Phoenix" and "America/Denver"
* both have GMT-07:00, but differ in daylight savings behavior.
*/
public static synchronized String[] getAvailableIDs(int rawOffset) {
String[] resultArray = new String[TimeZoneData.MAXIMUM_ZONES_PER_OFFSET];
int count = 0;
for (int i = 0; i < TimeZoneData.zones.length; ++i) {
if (rawOffset == TimeZoneData.zones[i].getRawOffset() &&
TimeZoneData.zones[i].getID().length() <= 3) // Hide long IDs
resultArray[count++] = TimeZoneData.zones[i].getID();
}
// copy into array of the right size and return
String[] finalResult = new String[count];
System.arraycopy(resultArray, 0, finalResult, 0, count);
return finalResult;
}
/**
* Gets all the available IDs supported.
* @return an array of IDs.
*/
public static synchronized String[] getAvailableIDs() {
String[] resultArray = new String[TimeZoneData.zones.length];
int count = 0;
for (int i = 0; i < TimeZoneData.zones.length; ++i)
if (TimeZoneData.zones[i].getID().length() <= 3) // Hide long IDs
resultArray[count++] = TimeZoneData.zones[i].getID();
// copy into array of the right size and return
String[] finalResult = new String[count];
System.arraycopy(resultArray, 0, finalResult, 0, count);
return finalResult;
}
/**
* Gets the default TimeZone for this host.
* @return a default TimeZone.
*/
public static synchronized TimeZone getDefault() {
if (defaultZone == null) {
// get the ID from the system properties, and translate the
// 3-letter code to a full TimeZone id.
String ID = System.getProperty("user.timezone", DEFAULT_SHORT_ID);
String remappedID = (String)idlookup.get(ID);
if (remappedID != null) ID = remappedID;
// The ID will only be null at this point if the user has set
// user.timezone to an invalid value.
if (ID == null) ID = DEFAULT_ID;
ID = TimeZoneData.mapLongIDtoShortID(ID); // For compatibility with 1.1 FCS
defaultZone = getTimeZone(ID);
}
return (TimeZone)defaultZone.clone();
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?