Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(268)

Unified Diff: sdk/lib/core/date.dart

Issue 11770004: Rename Date to DateTime. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Address comments and keep Backwards-compatibility class Date. Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « sdk/lib/core/corelib_sources.gypi ('k') | sdk/lib/core/date_time.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sdk/lib/core/date.dart
diff --git a/sdk/lib/core/date.dart b/sdk/lib/core/date.dart
deleted file mode 100644
index d0c0f01d26819194ae0dcc130f6afaa7fe4f96b5..0000000000000000000000000000000000000000
--- a/sdk/lib/core/date.dart
+++ /dev/null
@@ -1,428 +0,0 @@
-// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-part of dart.core;
-
-/**
- * Date is the public interface to a point in time.
- *
- * It can represent time values that are at a distance of at most
- * 8,640,000,000,000,000ms (100,000,000 days) from epoch (1970-01-01 UTC). In
- * other words: [:millisecondsSinceEpoch.abs() <= 8640000000000000:].
- *
- * Also see [Stopwatch] for means to measure time-spans.
- */
-abstract class Date implements Comparable {
- // Weekday constants that are returned by [weekday] method:
- static const int MON = 1;
- static const int TUE = 2;
- static const int WED = 3;
- static const int THU = 4;
- static const int FRI = 5;
- static const int SAT = 6;
- static const int SUN = 7;
- static const int DAYS_IN_WEEK = 7;
-
- // Month constants that are returned by the [month] getter.
- static const int JAN = 1;
- static const int FEB = 2;
- static const int MAR = 3;
- static const int APR = 4;
- static const int MAY = 5;
- static const int JUN = 6;
- static const int JUL = 7;
- static const int AUG = 8;
- static const int SEP = 9;
- static const int OCT = 10;
- static const int NOV = 11;
- static const int DEC = 12;
-
- /**
- * Constructs a [Date] instance based on the individual parts. The date is
- * in the local time zone.
- *
- * [month] and [day] are one-based. For example
- * [:new Date(1938, 1, 10):] represents the 10th of January 1938.
- */
- factory Date(int year,
- [int month = 1,
- int day = 1,
- int hour = 0,
- int minute = 0,
- int second = 0,
- int millisecond = 0]) {
- return new _DateImpl(
- year, month, day, hour, minute, second, millisecond, false);
- }
-
- /**
- * Constructs a [Date] instance based on the individual parts. The date is
- * in the UTC time zone.
- *
- * [month] and [day] are one-based. For example
- * [:new Date.utc(1938, 1, 10):] represents the 10th of January 1938 in
- * Coordinated Universal Time.
- */
- factory Date.utc(int year,
- [int month = 1,
- int day = 1,
- int hour = 0,
- int minute = 0,
- int second = 0,
- int millisecond = 0]) {
- return new _DateImpl(
- year, month, day, hour, minute, second, millisecond, true);
- }
-
- /**
- * Constructs a new [Date] instance with current date time value in the
- * local time zone.
- */
- factory Date.now() => new _DateImpl.now();
-
- /**
- * Constructs a new [Date] instance based on [formattedString].
- */
- factory Date.fromString(String formattedString)
- => new _DateImpl.fromString(formattedString);
-
- /**
- * Constructs a new [Date] instance with the given [millisecondsSinceEpoch].
- * If [isUtc] is false then the date is in the local time zone.
- *
- * The constructed [Date] represents
- * 1970-01-01T00:00:00Z + [millisecondsSinceEpoch]ms in the given
- * time zone (local or UTC).
- */
- // TODO(floitsch): the spec allows default values in interfaces, but our
- // tools don't yet. Eventually we want to have default values here.
- // TODO(lrn): Have two constructors instead of taking an optional bool.
- factory Date.fromMillisecondsSinceEpoch(int millisecondsSinceEpoch,
- {bool isUtc: false}) {
- return new _DateImpl.fromMillisecondsSinceEpoch(millisecondsSinceEpoch,
- isUtc);
- }
-
- /**
- * Returns true if [this] occurs at the same time as [other]. The
- * comparison is independent of whether the time is utc or in the local
- * time zone.
- */
- bool operator ==(Date other);
- /**
- * Returns true if [this] occurs before [other]. The comparison is independent
- * of whether the time is utc or in the local time zone.
- */
- bool operator <(Date other);
- /**
- * Returns true if [this] occurs at the same time or before [other]. The
- * comparison is independent of whether the time is utc or in the local
- * time zone.
- */
- bool operator <=(Date other);
- /**
- * Returns true if [this] occurs after [other]. The comparison is independent
- * of whether the time is utc or in the local time zone.
- */
- bool operator >(Date other);
- /**
- * Returns true if [this] occurs at the same time or after [other]. The
- * comparison is independent of whether the time is utc or in the local
- * time zone.
- */
- bool operator >=(Date other);
-
-
- /**
- * Returns [this] in the local time zone. Returns itself if it is already in
- * the local time zone. Otherwise, this method is equivalent to
- * [:new Date.fromMillisecondsSinceEpoch(millisecondsSinceEpoch,
- * isUtc: false):].
- */
- Date toLocal();
-
- /**
- * Returns [this] in UTC. Returns itself if it is already in UTC. Otherwise,
- * this method is equivalent to
- * [:new Date.fromMillisecondsSinceEpoch(millisecondsSinceEpoch,
- * isUtc: true):].
- */
- Date toUtc();
-
- /**
- * Returns the abbreviated time-zone name.
- *
- * Examples: [:"CET":] or [:"CEST":].
- */
- String get timeZoneName;
-
- /**
- * The time-zone offset is the difference between local time and UTC. That is,
- * the offset is positive for time zones west of UTC.
- *
- * Note, that JavaScript, Python and C return the difference between UTC and
- * local time. Java, C# and Ruby return the difference between local time and
- * UTC.
- */
- Duration get timeZoneOffset;
-
- /**
- * Returns the year.
- */
- int get year;
-
- /**
- * Returns the month into the year [1..12].
- */
- int get month;
-
- /**
- * Returns the day into the month [1..31].
- */
- int get day;
-
- /**
- * Returns the hour into the day [0..23].
- */
- int get hour;
-
- /**
- * Returns the minute into the hour [0...59].
- */
- int get minute;
-
- /**
- * Returns the second into the minute [0...59].
- */
- int get second;
-
- /**
- * Returns the millisecond into the second [0...999].
- */
- int get millisecond;
-
- /**
- * Returns the week day [MON..SUN]. In accordance with ISO 8601
- * a week starts with Monday which has the value 1.
- */
- int get weekday;
-
- /**
- * The milliseconds since 1970-01-01T00:00:00Z (UTC). This value is
- * independent of the time zone.
- *
- * See [Stopwatch] for means to measure time-spans.
- */
- int get millisecondsSinceEpoch;
-
- /**
- * True if this [Date] is set to UTC time.
- */
- bool get isUtc;
-
- /**
- * Returns a human readable string for this instance.
- * The returned string is constructed for the time zone of this instance.
- */
- String toString();
-
- /**
- * Returns a new [Date] with the [duration] added to this instance.
- */
- Date add(Duration duration);
-
- /**
- * Returns a new [Date] with the [duration] subtracted from this instance.
- */
- Date subtract(Duration duration);
-
- /**
- * Returns a [Duration] with the difference of [:this:] and [other].
- */
- Duration difference(Date other);
-}
-
-class _DateImpl implements Date {
- final int millisecondsSinceEpoch;
- final bool isUtc;
-
- factory _DateImpl.fromString(String formattedString) {
- // Read in (a subset of) ISO 8601.
- // Examples:
- // - "2012-02-27 13:27:00"
- // - "2012-02-27 13:27:00.423z"
- // - "20120227 13:27:00"
- // - "20120227T132700"
- // - "20120227"
- // - "2012-02-27T14Z"
- // - "-123450101 00:00:00 Z" // In the year -12345.
- final RegExp re = new RegExp(
- r'^([+-]?\d?\d\d\d\d)-?(\d\d)-?(\d\d)' // The day part.
- r'(?:[ T](\d\d)(?::?(\d\d)(?::?(\d\d)(.\d{1,6})?)?)? ?([zZ])?)?$');
- Match match = re.firstMatch(formattedString);
- if (match != null) {
- int parseIntOrZero(String matched) {
- // TODO(floitsch): we should not need to test against the empty string.
- if (matched == null || matched == "") return 0;
- return int.parse(matched);
- }
-
- double parseDoubleOrZero(String matched) {
- // TODO(floitsch): we should not need to test against the empty string.
- if (matched == null || matched == "") return 0.0;
- return double.parse(matched);
- }
-
- int years = int.parse(match[1]);
- int month = int.parse(match[2]);
- int day = int.parse(match[3]);
- int hour = parseIntOrZero(match[4]);
- int minute = parseIntOrZero(match[5]);
- int second = parseIntOrZero(match[6]);
- bool addOneMillisecond = false;
- int millisecond = (parseDoubleOrZero(match[7]) * 1000).round().toInt();
- if (millisecond == 1000) {
- addOneMillisecond = true;
- millisecond = 999;
- }
- // TODO(floitsch): we should not need to test against the empty string.
- bool isUtc = (match[8] != null) && (match[8] != "");
- int millisecondsSinceEpoch = _brokenDownDateToMillisecondsSinceEpoch(
- years, month, day, hour, minute, second, millisecond, isUtc);
- if (millisecondsSinceEpoch == null) {
- throw new ArgumentError(formattedString);
- }
- if (addOneMillisecond) millisecondsSinceEpoch++;
- return new Date.fromMillisecondsSinceEpoch(millisecondsSinceEpoch,
- isUtc: isUtc);
- } else {
- throw new ArgumentError(formattedString);
- }
- }
-
- static const int _MAX_MILLISECONDS_SINCE_EPOCH = 8640000000000000;
-
- _DateImpl.fromMillisecondsSinceEpoch(this.millisecondsSinceEpoch,
- this.isUtc) {
- if (millisecondsSinceEpoch.abs() > _MAX_MILLISECONDS_SINCE_EPOCH) {
- throw new ArgumentError(millisecondsSinceEpoch);
- }
- if (isUtc == null) throw new ArgumentError(isUtc);
- }
-
- bool operator ==(other) {
- if (!(other is Date)) return false;
- return (millisecondsSinceEpoch == other.millisecondsSinceEpoch);
- }
-
- bool operator <(Date other)
- => millisecondsSinceEpoch < other.millisecondsSinceEpoch;
-
- bool operator <=(Date other)
- => millisecondsSinceEpoch <= other.millisecondsSinceEpoch;
-
- bool operator >(Date other)
- => millisecondsSinceEpoch > other.millisecondsSinceEpoch;
-
- bool operator >=(Date other)
- => millisecondsSinceEpoch >= other.millisecondsSinceEpoch;
-
- int compareTo(Date other)
- => millisecondsSinceEpoch.compareTo(other.millisecondsSinceEpoch);
-
- int get hashCode => millisecondsSinceEpoch;
-
- Date toLocal() {
- if (isUtc) {
- return new Date.fromMillisecondsSinceEpoch(millisecondsSinceEpoch,
- isUtc: false);
- }
- return this;
- }
-
- Date toUtc() {
- if (isUtc) return this;
- return new Date.fromMillisecondsSinceEpoch(millisecondsSinceEpoch,
- isUtc: true);
- }
-
- String toString() {
- String fourDigits(int n) {
- int absN = n.abs();
- String sign = n < 0 ? "-" : "";
- if (absN >= 1000) return "$n";
- if (absN >= 100) return "${sign}0$absN";
- if (absN >= 10) return "${sign}00$absN";
- return "${sign}000$absN";
- }
-
- String threeDigits(int n) {
- if (n >= 100) return "${n}";
- if (n >= 10) return "0${n}";
- return "00${n}";
- }
-
- String twoDigits(int n) {
- if (n >= 10) return "${n}";
- return "0${n}";
- }
-
- String y = fourDigits(year);
- String m = twoDigits(month);
- String d = twoDigits(day);
- String h = twoDigits(hour);
- String min = twoDigits(minute);
- String sec = twoDigits(second);
- String ms = threeDigits(millisecond);
- if (isUtc) {
- return "$y-$m-$d $h:$min:$sec.${ms}Z";
- } else {
- return "$y-$m-$d $h:$min:$sec.$ms";
- }
- }
-
- /** Returns a new [Date] with the [duration] added to [this]. */
- Date add(Duration duration) {
- int ms = millisecondsSinceEpoch;
- return new Date.fromMillisecondsSinceEpoch(
- ms + duration.inMilliseconds, isUtc: isUtc);
- }
-
- /** Returns a new [Date] with the [duration] subtracted from [this]. */
- Date subtract(Duration duration) {
- int ms = millisecondsSinceEpoch;
- return new Date.fromMillisecondsSinceEpoch(
- ms - duration.inMilliseconds, isUtc: isUtc);
- }
-
- /** Returns a [Duration] with the difference of [this] and [other]. */
- Duration difference(Date other) {
- int ms = millisecondsSinceEpoch;
- int otherMs = other.millisecondsSinceEpoch;
- return new Duration(milliseconds: ms - otherMs);
- }
-
- external _DateImpl(int year,
- int month,
- int day,
- int hour,
- int minute,
- int second,
- int millisecond,
- bool isUtc);
- external _DateImpl.now();
- external static int _brokenDownDateToMillisecondsSinceEpoch(
- int year, int month, int day, int hour, int minute, int second,
- int millisecond, bool isUtc);
- external String get timeZoneName;
- external Duration get timeZoneOffset;
- external int get year;
- external int get month;
- external int get day;
- external int get hour;
- external int get minute;
- external int get second;
- external int get millisecond;
- external int get weekday;
-}
« no previous file with comments | « sdk/lib/core/corelib_sources.gypi ('k') | sdk/lib/core/date_time.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698