使用 kotlinx-datetime KMM 获取当前星期的天数

问题描述 投票:0回答:2

如何使用 kotlinx.datetime KMM 库获取本周的日期?

例如。我想获取本周日期的列表,例如:

“星期一,07”“星期二,08”“星期三,09”,...)

这是使用Calendar的类似实现:

fun getDaysOfWeek(): Array<String?> {
        val dateFormat = SimpleDateFormat("EEEEE\ndd", Locale.getDefault())
        val calendar = Calendar.getInstance()
        calendar.firstDayOfWeek = Calendar.MONDAY
        calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY)

        val days = arrayOfNulls<String>(7)
        for (i in 0..6) {
            days[i] = dateFormat.format(calendar.time)
            calendar.add(Calendar.DAY_OF_MONTH, 1)
        }

        return days
    }
android kotlin kotlin-multiplatform kotlin-multiplatform-mobile kotlinx-datetime
2个回答
6
投票
val today = Clock.System.now().toLocalDateTime(TimeZone.currentSystemDefault()).date
val days = mutableListOf<LocalDate>()
val firstWeekDay = today.daysShift(-DayOfWeek.values().indexOf(today.dayOfWeek))
for (i in 0 until DayOfWeek.values().count()) {
    days.add(firstWeekDay.daysShift(i))
}
val dayStrings = days.map { "${it.dayOfWeek}, ${it.dayOfMonth}" }
println("$dayStrings")
fun LocalDate.daysShift(days: Int): LocalDate = when {
    days < 0 -> {
        minus(DateTimeUnit.DayBased(-days))
    }
    days > 0 -> {
        plus(DateTimeUnit.DayBased(days))
    }
    else -> this
}

0
投票
val today = Clock.System.now().toLocalDateTime(TimeZone.currentSystemDefault()).date
val todayWeekDay = today.dayOfWeek.isoDayNumber
val weekDays = (1..7).map { today.plus(it - todayWeekDay, DateTimeUnit.DAY) }
© www.soinside.com 2019 - 2024. All rights reserved.