Skip to content

Commit

Permalink
馃悰 Update calculation of day difference.
Browse files Browse the repository at this point in the history
  • Loading branch information
ParthBaraiya authored and AnkitPanchal10 committed Aug 12, 2022
1 parent c804173 commit 534f2b7
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 13 deletions.
6 changes: 3 additions & 3 deletions lib/src/day_view/day_view.dart
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ class DayViewState<T extends Object?> extends State<DayView<T>> {
_reloadCallback = _reload;
_setDateRange();

_currentDate = widget.initialDay ?? DateTime.now();
_currentDate = (widget.initialDay ?? DateTime.now()).withoutTime;

_regulateCurrentDate();

Expand Down Expand Up @@ -450,8 +450,8 @@ class DayViewState<T extends Object?> extends State<DayView<T>> {

/// Sets the minimum and maximum dates for current view.
void _setDateRange() {
_minDate = widget.minDay ?? CalendarConstants.epochDate;
_maxDate = widget.maxDay ?? CalendarConstants.maxDate;
_minDate = (widget.minDay ?? CalendarConstants.epochDate).withoutTime;
_maxDate = (widget.maxDay ?? CalendarConstants.maxDate).withoutTime;

assert(
_minDate.isBefore(_maxDate),
Expand Down
10 changes: 6 additions & 4 deletions lib/src/extensions.dart
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ extension DateTimeExtensions on DateTime {
}

/// Gets difference of days between [date] and calling object.
int getDayDifference(DateTime date) => difference(date).inDays.abs();
int getDayDifference(DateTime date) =>
withoutTime.difference(date.withoutTime).inDays.abs();

/// Gets difference of weeks between [date] and calling object.
int getWeekDifference(DateTime date, {WeekDays start = WeekDays.monday}) =>
Expand All @@ -57,7 +58,8 @@ extension DateTimeExtensions on DateTime {
// adding 1 in index. So, new formula with WeekDays is,
// difference = (weekdays - (start.index + 1))%7
//
final startDay = subtract(Duration(days: (weekday - start.index - 1) % 7));
final startDay =
withoutTime.subtract(Duration(days: (weekday - start.index - 1) % 7));

return [
startDay,
Expand All @@ -72,11 +74,11 @@ extension DateTimeExtensions on DateTime {

/// Returns the first date of week containing the current date
DateTime firstDayOfWeek({WeekDays start = WeekDays.monday}) =>
subtract(Duration(days: (weekday - start.index - 1) % 7));
withoutTime.subtract(Duration(days: (weekday - start.index - 1) % 7));

/// Returns the last date of week containing the current date
DateTime lastDayOfWeek({WeekDays start = WeekDays.monday}) =>
add(Duration(days: 6 - (weekday - start.index - 1) % 7));
withoutTime.add(Duration(days: 6 - (weekday - start.index - 1) % 7));

/// Returns list of all dates of [month].
/// All the dates are week based that means it will return array of size 42
Expand Down
6 changes: 3 additions & 3 deletions lib/src/month_view/month_view.dart
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@ class MonthViewState<T extends Object?> extends State<MonthView<T>> {
_setDateRange();

// Initialize current date.
_currentDate = widget.initialMonth ?? DateTime.now();
_currentDate = (widget.initialMonth ?? DateTime.now()).withoutTime;

_regulateCurrentDate();

Expand Down Expand Up @@ -387,10 +387,10 @@ class MonthViewState<T extends Object?> extends State<MonthView<T>> {
/// Sets the minimum and maximum dates for current view.
void _setDateRange() {
// Initialize minimum date.
_minDate = widget.minMonth ?? CalendarConstants.epochDate;
_minDate = (widget.minMonth ?? CalendarConstants.epochDate).withoutTime;

// Initialize maximum date.
_maxDate = widget.maxMonth ?? CalendarConstants.maxDate;
_maxDate = (widget.maxMonth ?? CalendarConstants.maxDate).withoutTime;

assert(
_minDate.isBefore(_maxDate),
Expand Down
8 changes: 5 additions & 3 deletions lib/src/week_view/week_view.dart
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@ class WeekViewState<T extends Object?> extends State<WeekView<T>> {
_setWeekDays();
_setDateRange();

_currentWeek = widget.initialDay ?? DateTime.now();
_currentWeek = (widget.initialDay ?? DateTime.now()).withoutTime;

_regulateCurrentDate();

Expand Down Expand Up @@ -484,10 +484,12 @@ class WeekViewState<T extends Object?> extends State<WeekView<T>> {
/// Sets the minimum and maximum dates for current view.
void _setDateRange() {
_minDate = (widget.minDay ?? CalendarConstants.epochDate)
.firstDayOfWeek(start: widget.startDay);
.firstDayOfWeek(start: widget.startDay)
.withoutTime;

_maxDate = (widget.maxDay ?? CalendarConstants.maxDate)
.lastDayOfWeek(start: widget.startDay);
.lastDayOfWeek(start: widget.startDay)
.withoutTime;

assert(
_minDate.isBefore(_maxDate),
Expand Down

0 comments on commit 534f2b7

Please sign in to comment.