truncateTo method

DateTime truncateTo(
  1. TimeUnit unit, {
  2. int startWeekday = DateTime.monday,
})

Truncates DateTime to the beginning of the provided TimeUnit.

Implementation

DateTime truncateTo(TimeUnit unit, {int startWeekday = DateTime.monday}) {
  switch (unit) {
    case TimeUnit.millennium:
      return DateTime(
        year ~/ 1000 * 1000,
      );
    case TimeUnit.century:
      return DateTime(
        year ~/ 100 * 100,
      );
    case TimeUnit.decade:
      return DateTime(
        year ~/ 10 * 10,
      );
    case TimeUnit.year:
      return DateTime(
        year,
      );
    case TimeUnit.quarter:
      return DateTime(
        year,
        (month - 1) ~/ 3 * 3 + 1,
      );
    case TimeUnit.month:
      return DateTime(
        year,
        month,
      );
    case TimeUnit.week:
      RangeError.checkValueInInterval(
          startWeekday, DateTime.monday, DateTime.sunday, 'startWeekday');
      return DateTime(
        year,
        month,
        day - (7 + weekday - startWeekday) % 7,
      );
    case TimeUnit.day:
      return DateTime(
        year,
        month,
        day,
      );
    case TimeUnit.hour:
      return DateTime(
        year,
        month,
        day,
        hour,
      );
    case TimeUnit.minute:
      return DateTime(
        year,
        month,
        day,
        hour,
        minute,
      );
    case TimeUnit.second:
      return DateTime(
        year,
        month,
        day,
        hour,
        minute,
        second,
      );
    case TimeUnit.millisecond:
      return DateTime(
        year,
        month,
        day,
        hour,
        minute,
        second,
        millisecond,
      );
    case TimeUnit.microsecond:
      return DateTime(
        year,
        month,
        day,
        hour,
        minute,
        second,
        millisecond,
        microsecond,
      );
  }
}