aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/core/date.scala
diff options
context:
space:
mode:
authorStewart Stewart <stewinsalot@gmail.com>2016-12-17 00:00:12 -0500
committerStewart Stewart <stewinsalot@gmail.com>2016-12-17 00:48:50 -0500
commit54857e80c605200f14e62c596bb943ecc296fdd0 (patch)
tree06a95d25743089531f9c77f45a891ea01d54752a /src/main/scala/xyz/driver/core/date.scala
parent861ceb03e8faeb564dd027b13250b5604af8645f (diff)
downloaddriver-core-54857e80c605200f14e62c596bb943ecc296fdd0.tar.gz
driver-core-54857e80c605200f14e62c596bb943ecc296fdd0.tar.bz2
driver-core-54857e80c605200f14e62c596bb943ecc296fdd0.zip
add date providing simple Date case class
Diffstat (limited to 'src/main/scala/xyz/driver/core/date.scala')
-rw-r--r--src/main/scala/xyz/driver/core/date.scala37
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))
+ }
+ }
+}