| /* |
| * Copyright 2010 Google Inc. |
| * |
| * 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. |
| */ |
| package com.google.gwt.core.client; |
| |
| /** |
| * A simple wrapper around a native JS Date object. |
| */ |
| public class JsDate extends JavaScriptObject { |
| |
| /** |
| * Creates a new date with the current time. |
| */ |
| public static native JsDate create() /*-{ |
| return new Date(); |
| }-*/; |
| |
| /** |
| * Creates a new date with the specified internal representation, which is the |
| * number of milliseconds since midnight on January 1st, 1970. This is the |
| * same representation returned by {@link #getTime()}. |
| */ |
| public static native JsDate create(double milliseconds) /*-{ |
| return new Date(milliseconds); |
| }-*/; |
| |
| /** |
| * Creates a new date using the specified values. |
| */ |
| public static native JsDate create(int year, int month) /*-{ |
| return new Date(year, month); |
| }-*/; |
| |
| /** |
| * Creates a new date using the specified values. |
| */ |
| public static native JsDate create(int year, int month, int dayOfMonth) /*-{ |
| return new Date(year, month, dayOfMonth); |
| }-*/; |
| |
| /** |
| * Creates a new date using the specified values. |
| */ |
| public static native JsDate create(int year, int month, int dayOfMonth, int hours) /*-{ |
| return new Date(year, month, dayOfMonth, hours); |
| }-*/; |
| |
| /** |
| * Creates a new date using the specified values. |
| */ |
| public static native JsDate create(int year, int month, int dayOfMonth, int hours, |
| int minutes) /*-{ |
| return new Date(year, month, dayOfMonth, hours, minutes); |
| }-*/; |
| |
| /** |
| * Creates a new date using the specified values. |
| */ |
| public static native JsDate create(int year, int month, int dayOfMonth, int hours, |
| int minutes, int seconds) /*-{ |
| return new Date(year, month, dayOfMonth, hours, minutes, seconds); |
| }-*/; |
| |
| /** |
| * Creates a new date using the specified values. |
| */ |
| public static native JsDate create(int year, int month, int dayOfMonth, int hours, |
| int minutes, int seconds, int millis) /*-{ |
| return new Date(year, month, dayOfMonth, hours, minutes, seconds, millis); |
| }-*/; |
| |
| /** |
| * Creates a new date from a string to be parsed. |
| */ |
| public static native JsDate create(String dateString) /*-{ |
| return new Date(dateString); |
| }-*/; |
| |
| /** |
| * Returns the numeric value corresponding to the current time - |
| * the number of milliseconds elapsed since 1 January 1970 00:00:00 UTC. |
| */ |
| public static native double now() /*-{ |
| // IE8 does not have Date.now |
| // when removing IE8 support we change this to Date.now() |
| if (Date.now) { |
| // Date.now vs Date.getTime() performance comparison: |
| // http://jsperf.com/date-now-vs-new-date/8 |
| return Date.now(); |
| } |
| return (new Date()).getTime(); |
| }-*/; |
| |
| /** |
| * Parses a string representation of a date and time and returns the internal |
| * millisecond representation. If the string cannot be parsed, the returned |
| * value will be <code>NaN</code>. Use {@link Double#isNaN(double)} to check |
| * the result. |
| */ |
| public static native double parse(String dateString) /*-{ |
| return Date.parse(dateString); |
| }-*/; |
| |
| // CHECKSTYLE_OFF: Matching the spec. |
| /** |
| * Returns the internal millisecond representation of the specified UTC date |
| * and time. |
| */ |
| public static native double UTC(int year, int month, int dayOfMonth, int hours, |
| int minutes, int seconds, int millis) /*-{ |
| return Date.UTC(year, month, dayOfMonth, hours, minutes, seconds, millis); |
| }-*/; |
| |
| // CHECKSTYLE_ON |
| |
| /** |
| * Non directly instantiable, use one of the {@link #create()} methods. |
| */ |
| protected JsDate() { |
| } |
| |
| /** |
| * Returns the day of the month. |
| */ |
| public final native int getDate() /*-{ |
| return this.getDate(); |
| }-*/; |
| |
| /** |
| * Returns the day of the week, from <code>0</code> (Sunday) to <code>6</code> |
| * Saturday. |
| */ |
| public final native int getDay() /*-{ |
| return this.getDay(); |
| }-*/; |
| |
| /** |
| * Returns the four-digit year. |
| */ |
| public final native int getFullYear() /*-{ |
| return this.getFullYear(); |
| }-*/; |
| |
| /** |
| * Returns the hour, between <code>0</code> (midnight) and <code>23</code>. |
| */ |
| public final native int getHours() /*-{ |
| return this.getHours(); |
| }-*/; |
| |
| /** |
| * Returns the milliseconds, between <code>0</code> and <code>999</code>. |
| */ |
| public final native int getMilliseconds() /*-{ |
| return this.getMilliseconds(); |
| }-*/; |
| |
| /** |
| * Returns the minutes, between <code>0</code> and <code>59</code>. |
| */ |
| public final native int getMinutes() /*-{ |
| return this.getMinutes(); |
| }-*/; |
| |
| /** |
| * Returns the month, from <code>0</code> (January) to <code>11</code> |
| * December. |
| */ |
| public final native int getMonth() /*-{ |
| return this.getMonth(); |
| }-*/; |
| |
| /** |
| * Returns the seconds, between <code>0</code> and <code>59</code>. |
| */ |
| public final native int getSeconds() /*-{ |
| return this.getSeconds(); |
| }-*/; |
| |
| /** |
| * Returns the internal millisecond representation of the date, the number of |
| * milliseconds since midnight on January 1st, 1970. This is the same |
| * representation returned by {@link #getTime()}. |
| */ |
| public final native double getTime() /*-{ |
| return this.getTime(); |
| }-*/; |
| |
| /** |
| * Returns the difference, in minutes, between the local and UTC |
| * representations of this date. The value returned is affected by whether or |
| * not daylight savings time would be in effect on specified date. |
| */ |
| public final native int getTimezoneOffset() /*-{ |
| return this.getTimezoneOffset(); |
| }-*/; |
| |
| /** |
| * Returns the day of the month, in UTC. |
| */ |
| public final native int getUTCDate() /*-{ |
| return this.getUTCDate(); |
| }-*/; |
| |
| /** |
| * Returns the day of the week, from <code>0</code> (Sunday) to <code>6</code> |
| * Saturday, in UTC. |
| */ |
| public final native int getUTCDay() /*-{ |
| return this.getUTCDay(); |
| }-*/; |
| |
| /** |
| * Returns the four-digit year, in UTC. |
| */ |
| public final native int getUTCFullYear() /*-{ |
| return this.getUTCFullYear(); |
| }-*/; |
| |
| /** |
| * Returns the hour, between <code>0</code> (midnight) and <code>23</code>, in |
| * UTC. |
| */ |
| public final native int getUTCHours() /*-{ |
| return this.getUTCHours(); |
| }-*/; |
| |
| /** |
| * Returns the milliseconds, between <code>0</code> and <code>999</code>, in |
| * UTC. |
| */ |
| public final native int getUTCMilliseconds() /*-{ |
| return this.getUTCMilliseconds(); |
| }-*/; |
| |
| /** |
| * Returns the minutes, between <code>0</code> and <code>59</code>, in UTC. |
| */ |
| public final native int getUTCMinutes() /*-{ |
| return this.getUTCMinutes(); |
| }-*/; |
| |
| /** |
| * Returns the month, from <code>0</code> (January) to <code>11</code> |
| * December, in UTC. |
| */ |
| public final native int getUTCMonth() /*-{ |
| return this.getUTCMonth(); |
| }-*/; |
| |
| /** |
| * Returns the seconds, between <code>0</code> and <code>59</code>, in UTC. |
| */ |
| public final native int getUTCSeconds() /*-{ |
| return this.getUTCSeconds(); |
| }-*/; |
| |
| /** |
| * Returns the year minus 1900. |
| * |
| * @deprecated Use {@link #getFullYear()}. |
| */ |
| @Deprecated |
| public final native int getYear() /*-{ |
| return this.getYear(); |
| }-*/; |
| |
| /** |
| * Sets the day of the month. Returns the millisecond representation of the |
| * adjusted date. |
| */ |
| public final native double setDate(int dayOfMonth) /*-{ |
| this.setDate(dayOfMonth); |
| return this.getTime(); |
| }-*/; |
| |
| /** |
| * Sets the year. Returns the millisecond representation of the adjusted date. |
| */ |
| public final native double setFullYear(int year) /*-{ |
| this.setFullYear(year); |
| return this.getTime(); |
| }-*/; |
| |
| /** |
| * Sets the year and month. Returns the millisecond representation of the |
| * adjusted date. |
| */ |
| public final native double setFullYear(int year, int month) /*-{ |
| this.setFullYear(year, month); |
| return this.getTime(); |
| }-*/; |
| |
| /** |
| * Sets the year, month, and day. Returns the millisecond representation of |
| * the adjusted date. |
| */ |
| public final native double setFullYear(int year, int month, int day) /*-{ |
| this.setFullYear(year, month, day); |
| return this.getTime(); |
| }-*/; |
| |
| /** |
| * Sets the hour. Returns the millisecond representation of the adjusted date. |
| */ |
| public final native double setHours(int hours) /*-{ |
| this.setHours(hours); |
| return this.getTime(); |
| }-*/; |
| |
| /** |
| * Sets the hour and minutes. Returns the millisecond representation of the |
| * adjusted date. |
| */ |
| public final native double setHours(int hours, int mins) /*-{ |
| this.setHours(hours, mins); |
| return this.getTime(); |
| }-*/; |
| |
| /** |
| * Sets the hour, minutes, and seconds. Returns the millisecond representation |
| * of the adjusted date. |
| */ |
| public final native double setHours(int hours, int mins, int secs) /*-{ |
| this.setHours(hours, mins, secs); |
| return this.getTime(); |
| }-*/; |
| |
| /** |
| * Sets the hour, minutes, seconds, and milliseconds. Returns the millisecond |
| * representation of the adjusted date. |
| */ |
| public final native double setHours(int hours, int mins, int secs, int ms) /*-{ |
| this.setHours(hours, mins, secs, ms); |
| return this.getTime(); |
| }-*/; |
| |
| /** |
| * Sets the minutes. Returns the millisecond representation of the adjusted |
| * date. |
| */ |
| public final native double setMinutes(int minutes) /*-{ |
| this.setMinutes(minutes); |
| return this.getTime(); |
| }-*/; |
| |
| /** |
| * Sets the minutes and seconds. Returns the millisecond representation of the |
| * adjusted date. |
| */ |
| public final native double setMinutes(int minutes, int seconds) /*-{ |
| this.setMinutes(minutes, seconds); |
| return this.getTime(); |
| }-*/; |
| |
| /** |
| * Sets the minutes, seconds, and milliseconds. Returns the millisecond |
| * representation of the adjusted date. |
| */ |
| public final native double setMinutes(int minutes, int seconds, int millis) /*-{ |
| this.setMinutes(minutes, seconds, millis); |
| return this.getTime(); |
| }-*/; |
| |
| /** |
| * Sets the month. Returns the millisecond representation of the adjusted |
| * date. |
| */ |
| public final native double setMonth(int month) /*-{ |
| this.setMonth(month); |
| return this.getTime(); |
| }-*/; |
| |
| /** |
| * Sets the month and day. Returns the millisecond representation of the |
| * adjusted date. |
| */ |
| public final native double setMonth(int month, int dayOfMonth) /*-{ |
| this.setMonth(month, dayOfMonth); |
| return this.getTime(); |
| }-*/; |
| |
| /** |
| * Sets the seconds. Returns the millisecond representation of the adjusted |
| * date. |
| */ |
| public final native double setSeconds(int seconds) /*-{ |
| this.setSeconds(seconds); |
| return this.getTime(); |
| }-*/; |
| |
| /** |
| * Sets the seconds and milliseconds. Returns the millisecond representation |
| * of the adjusted date. |
| */ |
| public final native double setSeconds(int seconds, int millis) /*-{ |
| this.setSeconds(seconds, millis); |
| return this.getTime(); |
| }-*/; |
| |
| /** |
| * Sets the internal date representation. Returns the |
| * <code>milliseconds</code> argument. |
| */ |
| public final native double setTime(double milliseconds) /*-{ |
| this.setTime(milliseconds); |
| return this.getTime(); |
| }-*/; |
| |
| /** |
| * Sets the day of the month, in UTC. Returns the millisecond representation |
| * of the adjusted date. |
| */ |
| public final native double setUTCDate(int dayOfMonth) /*-{ |
| this.setUTCDate(dayOfMonth); |
| return this.getTime(); |
| }-*/; |
| |
| /** |
| * Sets the year, in UTC. Returns the millisecond representation of the |
| * adjusted date. |
| */ |
| public final native double setUTCFullYear(int year) /*-{ |
| this.setUTCFullYear(year); |
| return this.getTime(); |
| }-*/; |
| |
| /** |
| * Sets the year and month, in UTC. Returns the millisecond representation of |
| * the adjusted date. |
| */ |
| public final native double setUTCFullYear(int year, int month) /*-{ |
| this.setUTCFullYear(year, month); |
| return this.getTime(); |
| }-*/; |
| |
| /** |
| * Sets the year, month, and day, in UTC. Returns the millisecond |
| * representation of the adjusted date. |
| */ |
| public final native double setUTCFullYear(int year, int month, int day) /*-{ |
| this.setUTCFullYear(year, month, day); |
| return this.getTime(); |
| }-*/; |
| |
| /** |
| * Sets the hour, in UTC. Returns the millisecond representation of the |
| * adjusted date. |
| */ |
| public final native double setUTCHours(int hours) /*-{ |
| this.setUTCHours(hours); |
| return this.getTime(); |
| }-*/; |
| |
| /** |
| * Sets the hour and minutes, in UTC. Returns the millisecond representation |
| * of the adjusted date. |
| */ |
| public final native double setUTCHours(int hours, int mins) /*-{ |
| this.setUTCHours(hours, mins); |
| return this.getTime(); |
| }-*/; |
| |
| /** |
| * Sets the hour, minutes, and seconds, in UTC. Returns the millisecond |
| * representation of the adjusted date. |
| */ |
| public final native double setUTCHours(int hours, int mins, int secs) /*-{ |
| this.setUTCHours(hours, mins, secs); |
| return this.getTime(); |
| }-*/; |
| |
| /** |
| * Sets the hour, minutes, seconds, and milliseconds, in UTC. Returns the |
| * millisecond representation of the adjusted date. |
| */ |
| public final native double setUTCHours(int hours, int mins, int secs, int ms) /*-{ |
| this.setUTCHours(hours, mins, secs, ms); |
| return this.getTime(); |
| }-*/; |
| |
| /** |
| * Sets the minutes, in UTC. Returns the millisecond representation of the |
| * adjusted date. |
| */ |
| public final native double setUTCMinutes(int minutes) /*-{ |
| this.setUTCMinutes(minutes); |
| return this.getTime(); |
| }-*/; |
| |
| /** |
| * Sets the minutes and seconds, in UTC. Returns the millisecond |
| * representation of the adjusted date. |
| */ |
| public final native double setUTCMinutes(int minutes, int seconds) /*-{ |
| this.setUTCMinutes(minutes, seconds); |
| return this.getTime(); |
| }-*/; |
| |
| /** |
| * Sets the minutes, seconds, and milliseconds, in UTC. Returns the |
| * millisecond representation of the adjusted date. |
| */ |
| public final native double setUTCMinutes(int minutes, int seconds, int millis) /*-{ |
| this.setUTCMinutes(minutes, seconds, millis); |
| return this.getTime(); |
| }-*/; |
| |
| /** |
| * Sets the month, in UTC. Returns the millisecond representation of the |
| * adjusted date. |
| */ |
| public final native double setUTCMonth(int month) /*-{ |
| this.setUTCMonth(month); |
| return this.getTime(); |
| }-*/; |
| |
| /** |
| * Sets the month and day, in UTC. Returns the millisecond representation of |
| * the adjusted date. |
| */ |
| public final native double setUTCMonth(int month, int dayOfMonth) /*-{ |
| this.setUTCMonth(month, dayOfMonth); |
| return this.getTime(); |
| }-*/; |
| |
| /** |
| * Sets the seconds, in UTC. Returns the millisecond representation of the |
| * adjusted date. |
| */ |
| public final native double setUTCSeconds(int seconds) /*-{ |
| this.setUTCSeconds(seconds); |
| return this.getTime(); |
| }-*/; |
| |
| /** |
| * Sets the seconds and milliseconds, in UTC. Returns the millisecond |
| * representation of the adjusted date. |
| */ |
| public final native double setUTCSeconds(int seconds, int millis) /*-{ |
| this.setUTCSeconds(seconds, millis); |
| return this.getTime(); |
| }-*/; |
| |
| /** |
| * Sets a two-digit year. |
| * |
| * @deprecated Use {@link #setFullYear(int)}. |
| */ |
| @Deprecated |
| public final native double setYear(int year) /*-{ |
| this.setYear(year); |
| return this.getTime(); |
| }-*/; |
| |
| /** |
| * Returns a date string in the local time zone. |
| */ |
| public final native String toDateString() /*-{ |
| return this.toDateString(); |
| }-*/; |
| |
| /** |
| * Returns a date and time string in GMT. |
| * |
| * @deprecated Use {@link #toUTCString()}. |
| */ |
| @Deprecated |
| public final native String toGMTString() /*-{ |
| return this.toGMTString(); |
| }-*/; |
| |
| /** |
| * Returns a date string in the local time zone according to local formatting |
| * conventions. |
| */ |
| public final native String toLocaleDateString() /*-{ |
| return this.toLocaleDateString(); |
| }-*/; |
| |
| /** |
| * Returns a date and time string in the local time zone according to local |
| * formatting conventions. |
| */ |
| public final native String toLocaleString() /*-{ |
| return this.toLocaleString(); |
| }-*/; |
| |
| /** |
| * Returns a time string in the local time zone according to local formatting |
| * conventions. |
| */ |
| public final native String toLocaleTimeString() /*-{ |
| return this.toLocaleTimeString(); |
| }-*/; |
| |
| /** |
| * Returns a time string in the local time zone. |
| */ |
| public final native String toTimeString() /*-{ |
| return this.toTimeString(); |
| }-*/; |
| |
| /** |
| * Returns a date and time string in UTC. |
| */ |
| public final native String toUTCString() /*-{ |
| return this.toUTCString(); |
| }-*/; |
| |
| /** |
| * Returns the millisecond representation, as {@link #getTime()}. |
| */ |
| public final native double valueOf() /*-{ |
| return this.valueOf(); |
| }-*/; |
| |
| } |