package eu.timepit.refined
package util

import eu.timepit.refined.api.Refined
import eu.timepit.refined.numeric.Interval

object time {

  /** An `Int` in the range from 1 to 12 representing the month-of-year. */
  type Month = Int Refined Interval[W.`1`.T, W.`12`.T]

  /**
   * An `Int` in the range from 1 to 31 representing the day-of-month.
   * Note that the days from 29 to 31 are not valid for all months.
   */
  type Day = Int Refined Interval[W.`1`.T, W.`31`.T]

  /** An `Int` in the range from 0 to 23 representing the hour-of-day. */
  type Hour = Int Refined Interval[W.`0`.T, W.`23`.T]

  /** An `Int` in the range from 0 to 59 representing the minute-of-hour. */
  type Minute = Int Refined Interval[W.`0`.T, W.`59`.T]

  /** An `Int` in the range from 0 to 59 representing the second-of-minute. */
  type Second = Int Refined Interval[W.`0`.T, W.`59`.T]

  /** An `Int` in the range from 0 to 999 representing the millisecond-of-second. */
  type Millis = Int Refined Interval[W.`0`.T, W.`999`.T]

  // Add safe constructors for java.time types once we require Java 8 or higher.
}

package eu.timepit.refined
package util

import eu.timepit.refined.api.Refined
import eu.timepit.refined.numeric.Interval

object time {

  /** An `Int` in the range from 1 to 12. */
  type Month = Int Refined Interval[W.`1`.T, W.`12`.T]

  /** An `Int` in the range from 1 to 31. */
  type DayOfMonth = Int Refined Interval[W.`1`.T, W.`31`.T]

  /** An `Int` in the range from 0 to 23. */
  type Hour = Int Refined Interval[W.`0`.T, W.`23`.T]

  /** An `Int` in the range from 0 to 59. */
  type Minute = Int Refined Interval[W.`0`.T, W.`59`.T]

  /** An `Int` in the range from 0 to 59. */
  type Second = Int Refined Interval[W.`0`.T, W.`59`.T]

  // Add safe constructors for java.time types once we require Java 8 or higher.
}

--- 
+++ 
@@ -6,20 +6,26 @@
 
 object time {
 
-  /** An `Int` in the range from 1 to 12. */
+  /** An `Int` in the range from 1 to 12 representing the month-of-year. */
   type Month = Int Refined Interval[W.`1`.T, W.`12`.T]
 
-  /** An `Int` in the range from 1 to 31. */
-  type DayOfMonth = Int Refined Interval[W.`1`.T, W.`31`.T]
+  /**
+   * An `Int` in the range from 1 to 31 representing the day-of-month.
+   * Note that the days from 29 to 31 are not valid for all months.
+   */
+  type Day = Int Refined Interval[W.`1`.T, W.`31`.T]
 
-  /** An `Int` in the range from 0 to 23. */
+  /** An `Int` in the range from 0 to 23 representing the hour-of-day. */
   type Hour = Int Refined Interval[W.`0`.T, W.`23`.T]
 
-  /** An `Int` in the range from 0 to 59. */
+  /** An `Int` in the range from 0 to 59 representing the minute-of-hour. */
   type Minute = Int Refined Interval[W.`0`.T, W.`59`.T]
 
-  /** An `Int` in the range from 0 to 59. */
+  /** An `Int` in the range from 0 to 59 representing the second-of-minute. */
   type Second = Int Refined Interval[W.`0`.T, W.`59`.T]
+
+  /** An `Int` in the range from 0 to 999 representing the millisecond-of-second. */
+  type Millis = Int Refined Interval[W.`0`.T, W.`999`.T]
 
   // Add safe constructors for java.time types once we require Java 8 or higher.
 }
Rename DayOfMonth to Day and add Millis
