/
Date.kt
30 lines (25 loc) · 1.07 KB
/
Date.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package com.example.sqldelight.hockey.data
import com.squareup.sqldelight.ColumnAdapter
import platform.Foundation.NSCalendar
import platform.Foundation.NSDate
import platform.Foundation.NSDateComponents
import platform.Foundation.dateWithTimeIntervalSince1970
import platform.Foundation.timeIntervalSince1970
import kotlin.math.floor
actual class Date internal constructor(internal val nsDate: NSDate) {
actual constructor(year: Int, month: Int, day: Int) : this(partsToDate(year, month + 1, day))
}
internal fun partsToDate(year: Int, month: Int, day: Int): NSDate {
val cal = NSCalendar.currentCalendar
val comps = NSDateComponents()
comps.setDay(day.toLong())
comps.setMonth(month.toLong())
comps.setYear(year.toLong())
return cal.dateFromComponents(comps)!!
}
actual class DateAdapter actual constructor() : ColumnAdapter<Date, Long> {
override fun decode(databaseValue: Long): Date =
Date(NSDate.dateWithTimeIntervalSince1970(databaseValue.toDouble() / 1000))
override fun encode(value: Date): Long =
floor(value.nsDate.timeIntervalSince1970 * 1000L).toLong()
}