/* * * * Copyright 1990-2009 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License version * 2 only, as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License version 2 for more details (a copy is * included at /legal/license.txt). * * You should have received a copy of the GNU General Public License * version 2 along with this work; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA * * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa * Clara, CA 95054 or visit www.sun.com if you need additional * information or have any questions. */ package java.util; /** * The class Date represents a specific instant in time, with millisecond * precision. * <p> * This Class has been subset for the MID Profile based on JDK 1.3. * In the full API, the class Date had two additional functions. * It allowed the interpretation of dates as year, month, day, hour, * minute, and second values. It also allowed the formatting and * parsing of date strings. Unfortunately, the API for these functions * was not amenable to internationalization. As of JDK 1.1, the Calendar * class should be used to convert between dates and time fields and * the DateFormat class should be used to format and parse date strings. * The corresponding methods in Date are deprecated. * <p> * Although the Date class is intended to reflect coordinated universal * time (UTC), it may not do so exactly, depending on the host environment * of the Java Virtual Machine. Nearly all modern operating systems assume * that 1 day = 24x60x60 = 86400 seconds in all cases. In UTC, however, * about once every year or two there is an extra second, called a "leap * second." The leap second is always added as the last second of the * day, and always on December 31 or June 30. For example, the last minute * of the year 1995 was 61 seconds long, thanks to an added leap second. * Most computer clocks are not accurate enough to be able to reflect the * leap-second distinction. * * @see TimeZone * @see Calendar * @version 1.0 (J2ME MIDP) */ public class Date { private long millis; /** * Allocates a <code>Date</code> object and initializes it to * represent the current time specified number of milliseconds since the * standard base time known as "the epoch", namely January 1, * 1970, 00:00:00 GMT. * @see java.lang.System#currentTimeMillis() */ public Date() { this(System.currentTimeMillis()); } /** * Allocates a <code>Date</code> object and initializes it to * represent the specified number of milliseconds since the * standard base time known as "the epoch", namely January 1, * 1970, 00:00:00 GMT. * * @param date the milliseconds since January 1, 1970, 00:00:00 GMT. * @see java.lang.System#currentTimeMillis() */ public Date(long date) { millis = date; } /** * Returns the number of milliseconds since January 1, 1970, 00:00:00 GMT * represented by this <tt>Date</tt> object. * * @return the number of milliseconds since January 1, 1970, 00:00:00 GMT * represented by this date. * * @see #setTime */ public long getTime() { return millis; } /** * Sets this <tt>Date</tt> object to represent a point in time that is * <tt>time</tt> milliseconds after January 1, 1970 00:00:00 GMT. * * @param time the number of milliseconds. * * @see #getTime */ public void setTime(long time) { millis = time; } /** * Compares two dates for equality. * The result is <code>true</code> if and only if the argument is * not <code>null</code> and is a <code>Date</code> object that * represents the same point in time, to the millisecond, as this object. * <p> * Thus, two <code>Date</code> objects are equal if and only if the * <code>getTime</code> method returns the same <code>long</code> * value for both. * * @param obj the object to compare with. * @return <code>true</code> if the objects are the same; * <code>false</code> otherwise. * @see java.util.Date#getTime() */ public boolean equals(Object obj) { return obj != null && obj instanceof Date && getTime() == ((Date) obj).getTime(); } /** * Returns a hash code value for this object. The result is the * exclusive OR of the two halves of the primitive <tt>long</tt> * value returned by the {@link Date#getTime} * method. That is, the hash code is the value of the expression: * <blockquote><pre> * (int)(this.getTime()^(this.getTime() >>> 32))</pre></blockquote> * * @return a hash code value for this object. */ public int hashCode() { long ht = getTime(); return (int) ht ^ (int) (ht >> 32); } }