Skip to content

Commit 7cd39e5

Browse files
committed
TimeRange.unit
1 parent d9a1ed0 commit 7cd39e5

9 files changed

+29
-1
lines changed

CHANGELOG.md

+5
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
## 3.1.0
2+
3+
- `TimeRange` now has a `unit` property that returns its corresponding
4+
DurationUnit type if available.
5+
16
## 3.0.0
27

38
> This release has breaking changes!

lib/src/time_range.dart

+2
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ abstract class TimeRange {
1616
DateTime get from;
1717
DateTime get to;
1818

19+
DurationUnit? get unit;
20+
1921
/// Returns true if [dateTime] is between [from] and [to] (inclusive)
2022
bool contains(DateTime dateTime) => from <= dateTime && dateTime <= to;
2123

lib/src/time_range/custom.dart

+3
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ class CustomTimeRange extends TimeRange {
1414
@override
1515
final DateTime to;
1616

17+
@override
18+
DurationUnit? get unit => null;
19+
1720
/// The timezone is assumed by the [from] passed in here.
1821
///
1922
/// [CustomTimeRange] does NOT ensure that [from] and [to] have the same timezone.

lib/src/time_range/day.dart

+3
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ class DayTimeRange extends TimeRange with PageableRange<DayTimeRange> {
3333
@override
3434
DateTime get to => from.startOfNextDay();
3535

36+
@override
37+
DurationUnit get unit => DurationUnit.day;
38+
3639
@override
3740
DayTimeRange toUtc() =>
3841
isUtc ? this : DayTimeRange(year, month, day, isUtc: true);

lib/src/time_range/hour.dart

+3
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ class HourTimeRange extends TimeRange with PageableRange<HourTimeRange> {
3636
@override
3737
DateTime get to => from.startOfNextHour();
3838

39+
@override
40+
DurationUnit get unit => DurationUnit.hour;
41+
3942
@override
4043
HourTimeRange toUtc() =>
4144
isUtc ? this : HourTimeRange(year, month, day, hour, isUtc: true);

lib/src/time_range/month.dart

+3
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ class MonthTimeRange extends TimeRange with PageableRange<MonthTimeRange> {
2929
@override
3030
DateTime get to => from.startOfNextMonth();
3131

32+
@override
33+
DurationUnit get unit => DurationUnit.month;
34+
3235
@override
3336
MonthTimeRange toUtc() =>
3437
isUtc ? this : MonthTimeRange(year, month, isUtc: true);

lib/src/time_range/week.dart

+6
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ class LocalWeekTimeRange extends CustomTimeRange
1313
dateTime.endOfLocalWeek(weekStart),
1414
);
1515

16+
@override
17+
DurationUnit get unit => DurationUnit.week;
18+
1619
@override
1720
CustomTimeRange toUtc() => throw UnsupportedError(
1821
"Local week time range cannot be converted to UTC");
@@ -34,6 +37,9 @@ class IsoWeekTimeRange extends CustomTimeRange
3437
int get weekYear => from.weekYear;
3538
int get week => from.week;
3639

40+
@override
41+
DurationUnit get unit => DurationUnit.week;
42+
3743
@override
3844
CustomTimeRange toUtc() =>
3945
throw UnsupportedError("ISO week time range cannot be converted to UTC");

lib/src/time_range/year.dart

+3
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ class YearTimeRange extends TimeRange with PageableRange<YearTimeRange> {
2525
@override
2626
DateTime get to => from.startOfNextYear();
2727

28+
@override
29+
DurationUnit get unit => DurationUnit.year;
30+
2831
@override
2932
YearTimeRange toUtc() => isUtc ? this : YearTimeRange(year, isUtc: true);
3033

pubspec.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: moment_dart
22
description: Multi-purpose immutable DateTime subclass. Supports multiple localizations to easily convert DateTime and Duration into human-readable format
3-
version: 3.0.0
3+
version: 3.1.0
44
homepage: https://github.com/sadespresso/moment_dart
55
issue_tracker: https://github.com/sadespresso/moment_dart/issues
66
funding:

0 commit comments

Comments
 (0)