ronantakizawa/codereview-bench huggingface dataset:
Repository: date-fns/date-fns
File: src/nextSaturday/test.ts (TypeScript)

Code before:
    assert.deepStrictEqual(
      nextSaturday(new Date(2020, 2 /* Mar */, 21)),
      new Date(2020, 2 /* Mar */, 28)
    )

    assert.deepStrictEqual(
      nextSaturday(new Date(2020, 2 /* Mar */, 20)),
      new Date(2020, 2 /* Mar */, 21)
    )

    assert.deepStrictEqual(
      nextSaturday(new Date(2020, 2 /* Mar */, 19)),
      new Date(2020, 2 /* Mar */, 21)
    )

    assert.deepStrictEqual(
      nextSaturday(new Date(2020, 2 /* Mar */, 18)),
      new Date(2020, 2 /* Mar */, 21)
    )

    assert.deepStrictEqual(
      nextSaturday(new Date(2020, 2 /* Mar */, 17)),
      new Date(2020, 2 /* Mar */, 21)
    )
  })
  it('returns `Invalid Date` if the given date is invalid', function () {
    assert(nextSaturday(new Date(NaN)) instanceof Date)
  })
})


Review comment (suggestion):
```suggestion
  })

  it('returns `Invalid Date` if the given date is invalid', () => {
```

Code after:
    assert.deepStrictEqual(
      nextSaturday(new Date(2020, 2 /* Mar */, 21)),
      new Date(2020, 2 /* Mar */, 28)
    )

    assert.deepStrictEqual(
      nextSaturday(new Date(2020, 2 /* Mar */, 20)),
      new Date(2020, 2 /* Mar */, 21)
    )

    assert.deepStrictEqual(
      nextSaturday(new Date(2020, 2 /* Mar */, 19)),
      new Date(2020, 2 /* Mar */, 21)
    )

    assert.deepStrictEqual(
      nextSaturday(new Date(2020, 2 /* Mar */, 18)),
      new Date(2020, 2 /* Mar */, 21)
    )

    assert.deepStrictEqual(
      nextSaturday(new Date(2020, 2 /* Mar */, 17)),
      new Date(2020, 2 /* Mar */, 21)
    )
  })

  it('returns `Invalid Date` if the given date is invalid', () => {
    assert(nextSaturday(new Date(NaN)) instanceof Date)
  })
})
Repository: date-fns/date-fns
File: src/nextSunday/index.ts (TypeScript)

Code before:
import requiredArgs from '../_lib/requiredArgs/index'
import nextDay from '../nextDay/index'
import toDate from '../toDate/index'

/**
 * @name nextSunday
 * @category Weekday Helpers
 * @summary When is the next Sunday?
 *
 * @description
 * When is the next Sunday?
 *
 * @param {Date | number} date the date to check
 * @returns {Date} the date is the next Sunday
 * @throws {TypeError} the date should be a valid date
 * @throws {TypeError} 1 argument required
 *
 * @example
 * When is the next Sunday after Mar, 22, 2020?
 * const result = nextSunday(new Date(2020, 2, 22))
 * => Sun Mar 29 2020 00:00:00
 **/

export default function nextSunday(date: Date | number): Date {
  requiredArgs(1, arguments)
  return nextDay(toDate(date), 0)
}


Review comment (suggestion):
```suggestion
 * @param {Date | number} date - the date to start counting from
```

Code after:
import requiredArgs from '../_lib/requiredArgs/index'
import nextDay from '../nextDay/index'
import toDate from '../toDate/index'

/**
 * @name nextSunday
 * @category Weekday Helpers
 * @summary When is the next Sunday?
 *
 * @description
 * When is the next Sunday?
 *
 * @param {Date | number} date - the date to start counting from
 * @returns {Date} the next Sunday
 * @throws {TypeError} 1 argument required
 *
 * @example
 * // When is the next Sunday after Mar, 22, 2020?
 * const result = nextSunday(new Date(2020, 2, 22))
 * //=> Sun Mar 29 2020 00:00:00
 */
export default function nextSunday(date: Date | number): Date {
  requiredArgs(1, arguments)
  return nextDay(toDate(date), 0)
}
Repository: date-fns/date-fns
File: src/nextSaturday/index.ts (TypeScript)

Code before:
import requiredArgs from '../_lib/requiredArgs/index'
import nextDay from '../nextDay/index'
import toDate from '../toDate/index'

/**
 * @name nextSaturday
 * @category Weekday Helpers
 * @summary When is the next Saturday?
 *
 * @description
 * When is the next Saturday?
 *
 * @param {Date | number} date the date to check
 * @returns {Date} the date is the next Saturday
 * @throws {TypeError} the date should be a valid date
 * @throws {TypeError} 1 argument required
 *
 * @example
 * When is the next Saturday after Mar, 22, 2020?
 * const result = nextSaturday(new Date(2020, 2, 22))
 * => Sat Mar 28 2020 00:00:00
 **/

export default function nextSaturday(date: Date | number): Date {
  requiredArgs(1, arguments)
  return nextDay(toDate(date), 6)
}


Review comment (suggestion):
```suggestion
 * @returns {Date} the next Saturday
```

Code after:
import requiredArgs from '../_lib/requiredArgs/index'
import nextDay from '../nextDay/index'
import toDate from '../toDate/index'

/**
 * @name nextSaturday
 * @category Weekday Helpers
 * @summary When is the next Saturday?
 *
 * @description
 * When is the next Saturday?
 *
 * @param {Date | number} date - the date to start counting from
 * @returns {Date} the next Saturday
 * @throws {TypeError} 1 argument required
 *
 * @example
 * // When is the next Saturday after Mar, 22, 2020?
 * const result = nextSaturday(new Date(2020, 2, 22))
 * //=> Sat Mar 28 2020 00:00:00
 */
export default function nextSaturday(date: Date | number): Date {
  requiredArgs(1, arguments)
  return nextDay(toDate(date), 6)
}
Repository: date-fns/date-fns
File: src/nextSunday/index.ts (TypeScript)

Code before:
import requiredArgs from '../_lib/requiredArgs/index'
import nextDay from '../nextDay/index'
import toDate from '../toDate/index'

/**
 * @name nextSunday
 * @category Weekday Helpers
 * @summary When is the next Sunday?
 *
 * @description
 * When is the next Sunday?
 *
 * @param {Date | number} date the date to check
 * @returns {Date} the date is the next Sunday
 * @throws {TypeError} the date should be a valid date
 * @throws {TypeError} 1 argument required
 *
 * @example
 * When is the next Sunday after Mar, 22, 2020?
 * const result = nextSunday(new Date(2020, 2, 22))
 * => Sun Mar 29 2020 00:00:00
 **/

export default function nextSunday(date: Date | number): Date {
  requiredArgs(1, arguments)
  return nextDay(toDate(date), 0)
}


Review comment (suggestion):
```suggestion
 * @returns {Date} the next Sunday
```

Code after:
import requiredArgs from '../_lib/requiredArgs/index'
import nextDay from '../nextDay/index'
import toDate from '../toDate/index'

/**
 * @name nextSunday
 * @category Weekday Helpers
 * @summary When is the next Sunday?
 *
 * @description
 * When is the next Sunday?
 *
 * @param {Date | number} date - the date to start counting from
 * @returns {Date} the next Sunday
 * @throws {TypeError} 1 argument required
 *
 * @example
 * // When is the next Sunday after Mar, 22, 2020?
 * const result = nextSunday(new Date(2020, 2, 22))
 * //=> Sun Mar 29 2020 00:00:00
 */
export default function nextSunday(date: Date | number): Date {
  requiredArgs(1, arguments)
  return nextDay(toDate(date), 0)
}
Repository: date-fns/date-fns
File: src/nextSunday/index.ts (TypeScript)

Code before:
import requiredArgs from '../_lib/requiredArgs/index'
import nextDay from '../nextDay/index'
import toDate from '../toDate/index'

/**
 * @name nextSunday
 * @category Weekday Helpers
 * @summary When is the next Sunday?
 *
 * @description
 * When is the next Sunday?
 *
 * @param {Date | number} date the date to check
 * @returns {Date} the date is the next Sunday
 * @throws {TypeError} the date should be a valid date
 * @throws {TypeError} 1 argument required
 *
 * @example
 * When is the next Sunday after Mar, 22, 2020?
 * const result = nextSunday(new Date(2020, 2, 22))
 * => Sun Mar 29 2020 00:00:00
 **/

export default function nextSunday(date: Date | number): Date {
  requiredArgs(1, arguments)
  return nextDay(toDate(date), 0)
}


Review comment (suggestion):
```suggestion
 */
export default function nextSunday(date: Date | number): Date {
```

Code after:
import requiredArgs from '../_lib/requiredArgs/index'
import nextDay from '../nextDay/index'
import toDate from '../toDate/index'

/**
 * @name nextSunday
 * @category Weekday Helpers
 * @summary When is the next Sunday?
 *
 * @description
 * When is the next Sunday?
 *
 * @param {Date | number} date - the date to start counting from
 * @returns {Date} the next Sunday
 * @throws {TypeError} 1 argument required
 *
 * @example
 * // When is the next Sunday after Mar, 22, 2020?
 * const result = nextSunday(new Date(2020, 2, 22))
 * //=> Sun Mar 29 2020 00:00:00
 */
export default function nextSunday(date: Date | number): Date {
  requiredArgs(1, arguments)
  return nextDay(toDate(date), 0)
}
Repository: date-fns/date-fns
File: src/nextSunday/test.ts (TypeScript)

Code before:
    assert.deepStrictEqual(
      nextSunday(new Date(2020, 2 /* Mar */, 21)),
      new Date(2020, 2 /* Mar */, 22)
    )

    assert.deepStrictEqual(
      nextSunday(new Date(2020, 2 /* Mar */, 20)),
      new Date(2020, 2 /* Mar */, 22)
    )

    assert.deepStrictEqual(
      nextSunday(new Date(2020, 2 /* Mar */, 19)),
      new Date(2020, 2 /* Mar */, 22)
    )

    assert.deepStrictEqual(
      nextSunday(new Date(2020, 2 /* Mar */, 18)),
      new Date(2020, 2 /* Mar */, 22)
    )

    assert.deepStrictEqual(
      nextSunday(new Date(2020, 2 /* Mar */, 17)),
      new Date(2020, 2 /* Mar */, 22)
    )
  })
  it('returns `Invalid Date` if the given date is invalid', function () {
    assert(nextSunday(new Date(NaN)) instanceof Date)
  })
})


Review comment (suggestion):
```suggestion
  })

  it('returns `Invalid Date` if the given date is invalid', () => {
```

Code after:
    assert.deepStrictEqual(
      nextSunday(new Date(2020, 2 /* Mar */, 21)),
      new Date(2020, 2 /* Mar */, 22)
    )

    assert.deepStrictEqual(
      nextSunday(new Date(2020, 2 /* Mar */, 20)),
      new Date(2020, 2 /* Mar */, 22)
    )

    assert.deepStrictEqual(
      nextSunday(new Date(2020, 2 /* Mar */, 19)),
      new Date(2020, 2 /* Mar */, 22)
    )

    assert.deepStrictEqual(
      nextSunday(new Date(2020, 2 /* Mar */, 18)),
      new Date(2020, 2 /* Mar */, 22)
    )

    assert.deepStrictEqual(
      nextSunday(new Date(2020, 2 /* Mar */, 17)),
      new Date(2020, 2 /* Mar */, 22)
    )
  })

  it('returns `Invalid Date` if the given date is invalid', () => {
    assert(nextSunday(new Date(NaN)) instanceof Date)
  })
})
Repository: date-fns/date-fns
File: src/nextThursday/index.ts (TypeScript)

Code before:
import requiredArgs from '../_lib/requiredArgs/index'
import nextDay from '../nextDay/index'
import toDate from '../toDate/index'

/**
 * @name nextThursday
 * @category Weekday Helpers
 * @summary When is the next Thursday?
 *
 * @description
 * When is the next Thursday?
 *
 * @param {Date | number} date the date to check
 * @returns {Date} the date is the next Thursday
 * @throws {TypeError} the date should be a valid date
 * @throws {TypeError} 1 argument required
 *
 * @example
 * When is the next Thursday after Mar, 22, 2020?
 * const result = nextThursday(new Date(2020, 2, 22))
 * => Thur Mar 26 2020 00:00:00
 **/

export default function nextThursday(date: Date | number): Date {
  requiredArgs(1, arguments)
  return nextDay(toDate(date), 4)
}


Review comment (suggestion):
```suggestion
 * @param {Date | number} date - the date to start counting from
 * @returns {Date} the next Thursday
 * @throws {TypeError} 1 argument required
 *
 * @example
 * When is the next Thursday after Mar, 22, 2020?
 * const result = nextThursday(new Date(2020, 2, 22))
 * => Thur Mar 26 2020 00:00:00
 */
export default function nextThursday(date: Date | number): Date {
```

Code after:
import requiredArgs from '../_lib/requiredArgs/index'
import nextDay from '../nextDay/index'
import toDate from '../toDate/index'

/**
 * @name nextThursday
 * @category Weekday Helpers
 * @summary When is the next Thursday?
 *
 * @description
 * When is the next Thursday?
 *
 * @param {Date | number} date - the date to start counting from
 * @returns {Date} the next Thursday
 * @throws {TypeError} 1 argument required
 *
 * @example
 * // When is the next Thursday after Mar, 22, 2020?
 * const result = nextThursday(new Date(2020, 2, 22))
 * //=> Thur Mar 26 2020 00:00:00
 */
export default function nextThursday(date: Date | number): Date {
  requiredArgs(1, arguments)
  return nextDay(toDate(date), 4)
}
Repository: date-fns/date-fns
File: src/nextThursday/test.ts (TypeScript)

Code before:
    assert.deepStrictEqual(
      nextThursday(new Date(2020, 2 /* Mar */, 21)),
      new Date(2020, 2 /* Mar */, 26)
    )

    assert.deepStrictEqual(
      nextThursday(new Date(2020, 2 /* Mar */, 20)),
      new Date(2020, 2 /* Mar */, 26)
    )

    assert.deepStrictEqual(
      nextThursday(new Date(2020, 2 /* Mar */, 19)),
      new Date(2020, 2 /* Mar */, 26)
    )

    assert.deepStrictEqual(
      nextThursday(new Date(2020, 2 /* Mar */, 18)),
      new Date(2020, 2 /* Mar */, 19)
    )

    assert.deepStrictEqual(
      nextThursday(new Date(2020, 2 /* Mar */, 17)),
      new Date(2020, 2 /* Mar */, 19)
    )
  })
  it('returns `Invalid Date` if the given date is invalid', function () {
    assert(nextThursday(new Date(NaN)) instanceof Date)
  })
})


Review comment (suggestion):
```suggestion
  })

  it('returns `Invalid Date` if the given date is invalid', () => {
```

Code after:
    assert.deepStrictEqual(
      nextThursday(new Date(2020, 2 /* Mar */, 21)),
      new Date(2020, 2 /* Mar */, 26)
    )

    assert.deepStrictEqual(
      nextThursday(new Date(2020, 2 /* Mar */, 20)),
      new Date(2020, 2 /* Mar */, 26)
    )

    assert.deepStrictEqual(
      nextThursday(new Date(2020, 2 /* Mar */, 19)),
      new Date(2020, 2 /* Mar */, 26)
    )

    assert.deepStrictEqual(
      nextThursday(new Date(2020, 2 /* Mar */, 18)),
      new Date(2020, 2 /* Mar */, 19)
    )

    assert.deepStrictEqual(
      nextThursday(new Date(2020, 2 /* Mar */, 17)),
      new Date(2020, 2 /* Mar */, 19)
    )
  })

  it('returns `Invalid Date` if the given date is invalid', () => {
    assert(nextThursday(new Date(NaN)) instanceof Date)
  })
})
Repository: date-fns/date-fns
File: src/nextTuesday/index.ts (TypeScript)

Code before:
import requiredArgs from '../_lib/requiredArgs/index'
import nextDay from '../nextDay/index'
import toDate from '../toDate/index'

/**
 * @name nextTuesday
 * @category Weekday Helpers
 * @summary When is the next Tuesday?
 *
 * @description
 * When is the next Tuesday?
 *
 * @param {Date | number} date the date to check
 * @returns {Date} the date is the next Tuesday
 * @throws {TypeError} the date should be a valid date
 * @throws {TypeError} 1 argument required
 *
 * @example
 * When is the next Tuesday after Mar, 22, 2020?
 * const result = nextTuesday(new Date(2020, 2, 22))
 * => Tue Mar 24 2020 00:00:00
 **/

export default function nextTuesday(date: Date | number): Date {
  requiredArgs(1, arguments)
  return nextDay(toDate(date), 2)
}


Review comment (suggestion):
```suggestion
 * @param {Date | number} date - the date to start counting from
 * @returns {Date} the next Tuesday
 * @throws {TypeError} 1 argument required
```

Code after:
import requiredArgs from '../_lib/requiredArgs/index'
import nextDay from '../nextDay/index'
import toDate from '../toDate/index'

/**
 * @name nextTuesday
 * @category Weekday Helpers
 * @summary When is the next Tuesday?
 *
 * @description
 * When is the next Tuesday?
 *
 * @param {Date | number} date - the date to start counting from
 * @returns {Date} the next Tuesday
 * @throws {TypeError} 1 argument required
 *
 * @example
 * // When is the next Tuesday after Mar, 22, 2020?
 * const result = nextTuesday(new Date(2020, 2, 22))
 * //=> Tue Mar 24 2020 00:00:00
 */
export default function nextTuesday(date: Date | number): Date {
  requiredArgs(1, arguments)
  return nextDay(toDate(date), 2)
}
Repository: date-fns/date-fns
File: src/nextWednesday/index.ts (TypeScript)

Code before:
import requiredArgs from '../_lib/requiredArgs/index'
import nextDay from '../nextDay/index'
import toDate from '../toDate/index'

/**
 * @name nextWednesday
 * @category Weekday Helpers
 * @summary When is the next Wednesday?
 *
 * @description
 * When is the next Wednesday?
 *
 * @param {Date | number} date the date to check
 * @returns {Date} the date is the next Wednesday
 * @throws {TypeError} the date should be a valid date
 * @throws {TypeError} 1 argument required
 *
 * @example
 * When is the next Wednesday after Mar, 22, 2020?
 * const result = nextWednesday(new Date(2020, 2, 22))
 * => Wed Mar 25 2020 00:00:00
 **/
export default function nextWednesday(date: Date | number): Date {
  requiredArgs(1, arguments)
  return nextDay(toDate(date), 3)
}


Review comment (suggestion):
```suggestion
 * @param {Date | number} date - the date to start counting from
 * @returns {Date} the next Wednesday
 * @throws {TypeError} 1 argument required
 *
 * @example
 * When is the next Wednesday after Mar, 22, 2020?
 * const result = nextWednesday(new Date(2020, 2, 22))
 * => Wed Mar 25 2020 00:00:00
 */
export default function nextWednesday(date: Date | number): Date {
```

Code after:
import requiredArgs from '../_lib/requiredArgs/index'
import nextDay from '../nextDay/index'
import toDate from '../toDate/index'

/**
 * @name nextWednesday
 * @category Weekday Helpers
 * @summary When is the next Wednesday?
 *
 * @description
 * When is the next Wednesday?
 *
 * @param {Date | number} date - the date to start counting from
 * @returns {Date} the next Wednesday
 * @throws {TypeError} 1 argument required
 *
 * @example
 * // When is the next Wednesday after Mar, 22, 2020?
 * const result = nextWednesday(new Date(2020, 2, 22))
 * //=> Wed Mar 25 2020 00:00:00
 */
export default function nextWednesday(date: Date | number): Date {
  requiredArgs(1, arguments)
  return nextDay(toDate(date), 3)
}
Repository: date-fns/date-fns
File: src/isValid/index.ts (TypeScript)

Code before:
 *
 * @param {*} date - the date to check
 * @returns {Boolean} the date is valid
 * @throws {TypeError} 1 argument required
 *
 * @example
 * // For the valid date:
 * var result = isValid(new Date(2014, 1, 31))
 * //=> true
 *
 * @example
 * // For the value, convertable into a date:
 * var result = isValid(1393804800000)
 * //=> true
 *
 * @example
 * // For the invalid date:
 * var result = isValid(new Date(''))
 * //=> false
 */
export default function isValid(
  dirtyDate: unknown
): dirtyDate is Date | number {
  requiredArgs(1, arguments)

  if (!(dirtyDate instanceof Date) && typeof dirtyDate !== 'number') {
    return false
  }
  const date = toDate(dirtyDate)
  return !isNaN(Number(date))
}


Review comment (bug):
I think it would be better to use `isDate` here since it handles an iframe passing edge case not covered by instanceof alone.

Code after:
 *   (which is also the case with other *date-fns* functions).
 *
 * @param {*} date - the date to check
 * @returns {Boolean} the date is valid
 * @throws {TypeError} 1 argument required
 *
 * @example
 * // For the valid date:
 * const result = isValid(new Date(2014, 1, 31))
 * //=> true
 *
 * @example
 * // For the value, convertable into a date:
 * const result = isValid(1393804800000)
 * //=> true
 *
 * @example
 * // For the invalid date:
 * const result = isValid(new Date(''))
 * //=> false
 */
export default function isValid(dirtyDate: unknown): boolean {
  requiredArgs(1, arguments)

  if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {
    return false
  }
  const date = toDate(dirtyDate)
  return !isNaN(Number(date))
}
Repository: date-fns/date-fns
File: src/types.ts (TypeScript)

Code before:
  hours?: number
  minutes?: number
  seconds?: number
}

export interface Interval {
  start: Date | number
  end: Date | number
}

export interface StepOptions {
  step?: number
}

export interface WeekStartOptions {
  weekStartsOn?: Day
}

export interface LocaleOptions {
  locale?: Locale
}

export interface FirstWeekContainsDateOptions {
  firstWeekContainsDate?: FirstWeekContainsDate
}

export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6

export type FirstWeekContainsDate = 1 | 4

export interface DateValues {
  year?: number
  month?: number
  date?: number
  hours?: number
  minutes?: number
  seconds?: number
  milliseconds?: number
}


Review comment (suggestion):
In the future, please avoid introducing random changes like this. You probably had good intentions and logic behind those, but they aren't evident and produce unnecessary noise and potential merge conflicts for maintainers.

Code after:
  weeks?: number
  days?: number
  hours?: number
  minutes?: number
  seconds?: number
}

export interface Interval {
  start: Date | number
  end: Date | number
}

export interface StepOptions {
  step?: number
}

export interface WeekStartOptions {
  weekStartsOn?: Day
}

export interface LocaleOptions {
  locale?: Locale
}

export type FirstWeekContainsDate = 1 | 4

export interface FirstWeekContainsDateOptions {
  firstWeekContainsDate?: FirstWeekContainsDate
}

export interface DateValues {
  year?: number
  month?: number
  date?: number
  hours?: number
  minutes?: number
  seconds?: number
  milliseconds?: number
}
Repository: date-fns/date-fns
File: src/types.ts (TypeScript)

Code before:
  years?: number
  months?: number
  weeks?: number
  days?: number
  hours?: number
  minutes?: number
  seconds?: number
}

export interface Interval {
  start: Date | number
  end: Date | number
}

export interface StepOptions {
  step?: number
}

export interface WeekStartOptions {
  weekStartsOn?: Day
}

export interface WeekYearStartOptions {
  firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7
}

export interface LocaleOptions {
  locale?: Locale
}

export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6

export interface DateValues {
  year?: number
  month?: number
  date?: number
  hours?: number
  minutes?: number
  seconds?: number
  milliseconds?: number
}


Review comment (refactor):
I think it's worth to extract the alias too:

```suggestion
export interface WeekYearStartOptions {
  firstWeekContainsDate?: FirstWeekContainsDate 
}

export type FirstWeekContainsDate = 1 | 2 | 3 | 4 | 5 | 6 | 7
```

Code after:
  years?: number
  months?: number
  weeks?: number
  days?: number
  hours?: number
  minutes?: number
  seconds?: number
}

export interface Interval {
  start: Date | number
  end: Date | number
}

export interface StepOptions {
  step?: number
}

export interface WeekStartOptions {
  weekStartsOn?: Day
}

export interface FirstWeekContainsDateOptions {
  firstWeekContainsDate?: FirstWeekContainsDate
}

export interface LocaleOptions {
  locale?: Locale
}

export interface FirstWeekContainsDateOptions {
  firstWeekContainsDate?: FirstWeekContainsDate
}

export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6

export type FirstWeekContainsDate = 1 | 4

export interface DateValues {
  year?: number
  month?: number
  date?: number
  hours?: number
  minutes?: number
  seconds?: number
  milliseconds?: number
}