From 0db4d607e5fd873b6cf2912eee94075558ca2bbf Mon Sep 17 00:00:00 2001 From: Goddchen Date: Fri, 22 Nov 2024 13:47:12 +0100 Subject: [PATCH 1/2] fix: keep micros in monthsAgo, monthsFromNow and yearsAgo Signed-off-by: Goddchen --- pkgs/clock/lib/src/clock.dart | 6 +++--- pkgs/clock/test/clock_test.dart | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/pkgs/clock/lib/src/clock.dart b/pkgs/clock/lib/src/clock.dart index f6f47deb1..9cad995c5 100644 --- a/pkgs/clock/lib/src/clock.dart +++ b/pkgs/clock/lib/src/clock.dart @@ -139,7 +139,7 @@ class Clock { var year = time.year - (months + 12 - time.month) ~/ 12; var day = clampDayOfMonth(year: year, month: month, day: time.day); return DateTime(year, month, day, time.hour, time.minute, time.second, - time.millisecond); + time.millisecond, time.microsecond); } /// Return the point in time [months] from now on the same date. @@ -152,7 +152,7 @@ class Clock { var year = time.year + (months + time.month - 1) ~/ 12; var day = clampDayOfMonth(year: year, month: month, day: time.day); return DateTime(year, month, day, time.hour, time.minute, time.second, - time.millisecond); + time.millisecond, time.microsecond); } /// Return the point in time [years] ago on the same date. @@ -164,7 +164,7 @@ class Clock { var year = time.year - years; var day = clampDayOfMonth(year: year, month: time.month, day: time.day); return DateTime(year, time.month, day, time.hour, time.minute, time.second, - time.millisecond); + time.millisecond, time.microsecond); } /// Return the point in time [years] from now on the same date. diff --git a/pkgs/clock/test/clock_test.dart b/pkgs/clock/test/clock_test.dart index c457153df..f72273946 100644 --- a/pkgs/clock/test/clock_test.dart +++ b/pkgs/clock/test/clock_test.dart @@ -207,4 +207,22 @@ void main() { expect(clock.yearsFromNow(30), date(2043, 1, 1)); expect(clock.yearsFromNow(1000), date(3013, 1, 1)); }); + + group('micros', () { + test('should keep micros for monthsAgo', () { + expect(Clock.fixed(DateTime(2024, 2, 1, 0, 0, 0, 0, 123)).monthsAgo(1), + Clock.fixed(DateTime(2024, 1, 1, 0, 0, 0, 0, 123)).now()); + }); + + test('should keep micros for monthsFromNow', () { + expect( + Clock.fixed(DateTime(2024, 2, 1, 0, 0, 0, 0, 123)).monthsFromNow(1), + Clock.fixed(DateTime(2024, 3, 1, 0, 0, 0, 0, 123)).now()); + }); + + test('should keep micros for yearsAgo', () { + expect(Clock.fixed(DateTime(2024, 2, 1, 0, 0, 0, 0, 123)).yearsAgo(1), + Clock.fixed(DateTime(2023, 2, 1, 0, 0, 0, 0, 123)).now()); + }); + }); } From c4b9ef98ab97a84f1fa9c84ccf3a5acdb034f907 Mon Sep 17 00:00:00 2001 From: Goddchen Date: Fri, 22 Nov 2024 13:54:37 +0100 Subject: [PATCH 2/2] chore: update versions + add changelog Signed-off-by: Goddchen --- pkgs/clock/CHANGELOG.md | 4 ++++ pkgs/clock/pubspec.yaml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/pkgs/clock/CHANGELOG.md b/pkgs/clock/CHANGELOG.md index f372adaa1..eb4f9ab95 100644 --- a/pkgs/clock/CHANGELOG.md +++ b/pkgs/clock/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.1.3-wip + +* Keep microseconds when using `monthsAgo`, `monthsFromNow` and `yearsAgo` + ## 1.1.2 * Require Dart 3.4 diff --git a/pkgs/clock/pubspec.yaml b/pkgs/clock/pubspec.yaml index 605aa0991..7d21e5871 100644 --- a/pkgs/clock/pubspec.yaml +++ b/pkgs/clock/pubspec.yaml @@ -1,5 +1,5 @@ name: clock -version: 1.1.2 +version: 1.1.3-wip description: A fakeable wrapper for dart:core clock APIs. repository: https://github.com/dart-lang/tools/tree/main/pkgs/clock issue_tracker: https://github.com/dart-lang/tools/issues?q=is%3Aissue+is%3Aopen+label%3Apackage%3Aclock