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

Unified Diff: sdk/lib/_internal/js_runtime/lib/core_patch.dart

Issue 1493033003: Add microsecond support to DateTime. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Address comment. Created 5 years 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 | « runtime/vm/bootstrap_natives.h ('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/_internal/js_runtime/lib/core_patch.dart
diff --git a/sdk/lib/_internal/js_runtime/lib/core_patch.dart b/sdk/lib/_internal/js_runtime/lib/core_patch.dart
index 9dd31a4920723f9dbe71d8fb97ee1c43c189daee..dfed0dfa4116521e1ef191569ee08505fb762a42 100644
--- a/sdk/lib/_internal/js_runtime/lib/core_patch.dart
+++ b/sdk/lib/_internal/js_runtime/lib/core_patch.dart
@@ -186,6 +186,18 @@ class Error {
@patch
class DateTime {
@patch
+ DateTime.fromMillisecondsSinceEpoch(int millisecondsSinceEpoch,
+ {bool isUtc: false})
+ : this._withValue(millisecondsSinceEpoch, isUtc: isUtc);
+
+ @patch
+ DateTime.fromMicrosecondsSinceEpoch(int microsecondsSinceEpoch,
+ {bool isUtc: false})
+ : this._withValue(
+ _microsecondInRoundedMilliseconds(microsecondsSinceEpoch),
+ isUtc: isUtc);
+
+ @patch
DateTime._internal(int year,
int month,
int day,
@@ -193,26 +205,38 @@ class DateTime {
int minute,
int second,
int millisecond,
+ int microsecond,
bool isUtc)
// checkBool is manually inlined here because dart2js doesn't inline it
// and [isUtc] is usually a constant.
: this.isUtc = isUtc is bool
? isUtc
: throw new ArgumentError.value(isUtc, 'isUtc'),
- millisecondsSinceEpoch = checkInt(Primitives.valueFromDecomposedDate(
- year, month, day, hour, minute, second, millisecond, isUtc));
+ _value = checkInt(Primitives.valueFromDecomposedDate(
+ year, month, day, hour, minute, second,
+ millisecond + _microsecondInRoundedMilliseconds(microsecond),
+ isUtc));
@patch
DateTime._now()
: isUtc = false,
- millisecondsSinceEpoch = Primitives.dateNow();
+ _value = Primitives.dateNow();
+
+ /// Rounds the given [microsecond] to the nearest milliseconds value.
+ ///
+ /// For example, invoked with argument `2600` returns `3`.
+ static int _microsecondInRoundedMilliseconds(int microsecond) {
+ return (microsecond / 1000).round();
+ }
@patch
- static int _brokenDownDateToMillisecondsSinceEpoch(
+ static int _brokenDownDateToValue(
int year, int month, int day, int hour, int minute, int second,
- int millisecond, bool isUtc) {
+ int millisecond, int microsecond, bool isUtc) {
return Primitives.valueFromDecomposedDate(
- year, month, day, hour, minute, second, millisecond, isUtc);
+ year, month, day, hour, minute, second,
+ millisecond + _microsecondInRoundedMilliseconds(microsecond),
+ isUtc);
}
@patch
@@ -228,6 +252,29 @@ class DateTime {
}
@patch
+ DateTime add(Duration duration) {
+ return new DateTime._withValue(
+ _value + duration.inMilliseconds, isUtc: isUtc);
+ }
+
+ @patch
+ DateTime subtract(Duration duration) {
+ return new DateTime._withValue(
+ _value - duration.inMilliseconds, isUtc: isUtc);
+ }
+
+ @patch
+ Duration difference(DateTime other) {
+ return new Duration(milliseconds: _value - other._value);
+ }
+
+ @patch
+ int get millisecondsSinceEpoch => _value;
+
+ @patch
+ int get microsecondsSinceEpoch => _value * 1000;
+
+ @patch
int get year => Primitives.getYear(this);
@patch
@@ -249,6 +296,9 @@ class DateTime {
int get millisecond => Primitives.getMilliseconds(this);
@patch
+ int get microsecond => 0;
+
+ @patch
int get weekday => Primitives.getWeekday(this);
}
« no previous file with comments | « runtime/vm/bootstrap_natives.h ('k') | sdk/lib/core/date_time.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698