jean
11/22/2021, 12:26 PMexpect fun weekOfYear(time: String): Int
// android
actual fun weekOfYear(time: String): Int {
val calendar: Calendar = Calendar.getInstance(TimeZone.getDefault())
val sdf = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ", Locale.getDefault())
calendar.time = sdf.parse(time)!!
return calendar.get(Calendar.WEEK_OF_YEAR)
}
// ios
actual fun weekOfYear(time: String): Int {
val dateFormatter = NSDateFormatter().apply {
setDateStyle(none)
setTimeStyle(none)
setTimeZone(NSTimeZone.defaultTimeZone)
setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ")
}
val date = dateFormatter.dateFromString(time)
date ?: return 0
val calendar = NSCalendar.currentCalendar
val components = calendar.components(NSCalendarUnitWeekOfYear, date)
return components.weekOfYear.toInt()
}
But it gives me different results out of the same date "2021-01-01T22:00:00.000+0000"
This tests fails on iOS
@Test
fun `week of year should be 1`() {
val weekOfYear = weekOfYear("2021-01-01T22:00:00.000+0000")
assertEquals(1, weekOfYear)
}
it return 53
on iOS. Any advice on how to fix this?Jurriaan Mous
11/22/2021, 1:12 PMjean
11/22/2021, 2:25 PMlocalDataTime(time).dayOfYear / 7
as a workaround
thanks for the helpJurriaan Mous
11/22/2021, 3:14 PM"2021-12-27T22:00:00.000+01:00"
jean
11/23/2021, 10:14 AMNSCalendar(NSISO8601Calendar)
instead of NSCalendar.currentCalendar
Jurriaan Mous
11/23/2021, 10:39 AM