startOf method

DateTime startOf(
  1. TimeUnit unit
)

Returns the start of the specified unit of time.

Implementation

DateTime startOf(TimeUnit unit) {
  DateTime newDateTime;

  switch (unit) {
    case TimeUnit.microsecond:
      newDateTime = copyWith();

    case TimeUnit.millisecond:
      newDateTime = copyWith(
        microsecond: 0,
      );
    case TimeUnit.second:
      newDateTime = copyWith(
        millisecond: 0,
        microsecond: 0,
      );
    case TimeUnit.minute:
      newDateTime = copyWith(
        second: 0,
        millisecond: 0,
        microsecond: 0,
      );
    case TimeUnit.hour:
      newDateTime = copyWith(
        minute: 0,
        second: 0,
        millisecond: 0,
        microsecond: 0,
      );
    case TimeUnit.day:
      newDateTime = copyWith(
        hour: 0,
        minute: 0,
        second: 0,
        millisecond: 0,
        microsecond: 0,
      );
    case TimeUnit.week:
      final newDate = subtract(Duration(days: dayOfWeek - 1));
      newDateTime = copyWith(
        year: newDate.year,
        month: newDate.month,
        day: newDate.day,
        hour: 0,
        minute: 0,
        second: 0,
        millisecond: 0,
        microsecond: 0,
      );
    case TimeUnit.month:
      newDateTime = copyWith(
        day: 1,
        hour: 0,
        minute: 0,
        second: 0,
        millisecond: 0,
        microsecond: 0,
      );
    case TimeUnit.year:
      newDateTime = copyWith(
        month: 1,
        day: 1,
        hour: 0,
        minute: 0,
        second: 0,
        millisecond: 0,
        microsecond: 0,
      );
  }

  return newDateTime;
}