diff options
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/scala/xyz/driver/core/date.scala | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/main/scala/xyz/driver/core/date.scala b/src/main/scala/xyz/driver/core/date.scala new file mode 100644 index 0000000..3d38aff --- /dev/null +++ b/src/main/scala/xyz/driver/core/date.scala @@ -0,0 +1,37 @@ +package xyz.driver.core + +import java.util.Calendar + +import scalaz.{@@, Tag} + +object date { + + type Month = Int @@ Month.type + private[date] def tagMonth(value: Int): Month = Tag.of[Month.type](value) + + object Month { + val JANUARY = tagMonth(Calendar.JANUARY) + val FEBRUARY = tagMonth(Calendar.FEBRUARY) + val MARCH = tagMonth(Calendar.MARCH) + val APRIL = tagMonth(Calendar.APRIL) + val MAY = tagMonth(Calendar.MAY) + val JUNE = tagMonth(Calendar.JUNE) + val JULY = tagMonth(Calendar.JULY) + val AUGUST = tagMonth(Calendar.AUGUST) + val SEPTEMBER = tagMonth(Calendar.SEPTEMBER) + val OCTOBER = tagMonth(Calendar.OCTOBER) + val DECEMBER = tagMonth(Calendar.DECEMBER) + } + + final case class Date(year: Int, month: Month, day: Int) { + def iso8601: String = f"$year%04d-${Tag.unwrap(month) + 1}%02d-$day%02d" + } + + object Date { + def fromJavaDate(date: java.util.Date) = { + val cal = Calendar.getInstance() + cal.setTime(date) + Date(cal.get(Calendar.YEAR), tagMonth(cal.get(Calendar.MONTH)), cal.get(Calendar.DAY_OF_MONTH)) + } + } +} |