我是 Kotlin 的新手。通過按上一個按鈕向后移動一周和按下一個按鈕向前移動一周來獲取一周的開始日期和結束日期的最佳方法是什么?
uj5u.com熱心網友回復:
下面是如何獲取 startWeekDate 的示例。
private fun getStartWeekDate(){
val cal = Calendar.getInstance()
val currentDayOfWeek = cal.get(Calendar.DAY_OF_WEEK)
val daysAfterSunday = currentDayOfWeek - Calendar.SUNDAY
cal.add(Calendar.DATE, -daysAfterSunday)
val theDateForSunday = cal.time
}
對于結束日期()
private fun getEndWeekDate(){
val cal = Calendar.getInstance()
val currentDayOfWeek = cal.get(Calendar.DAY_OF_WEEK)
val daysBeforeSaturday = currentDayOfWeek - Calendar.SATURDAY
cal.add(Calendar.DATE, -daysBeforeSaturday)
val theDateForSaturday = cal.time
}
uj5u.com熱心網友回復:
您沒有提到在您的情況/文化/國家/地區,一周中的哪一天實際上決定了一周結束的開始。
這就是為什么我只能拿出一個fun接受一個java.time.DayOfWeek作為唯一的引數來計算下java.time.LocalDate與DayOfWeek在未來。幸運的是,科特林提供的概念擴展功能,這意味著你可以簡單地附加一個新的fun來LocalDate是這樣的:
fun LocalDate.getNext(weekday: DayOfWeek): LocalDate {
// add one day to have tomorrow
var next = this.plusDays(1)
// then start checking the days of week until the given one is reached
while (next.dayOfWeek != weekday) next = next.plusDays(1)
// when reached, return the result
return next
}
您可以像這樣在 main 中使用它:
fun main() {
val today = LocalDate.now()
println("Today ($today) is ${today.dayOfWeek.getDisplayName(TextStyle.FULL, Locale.ENGLISH)}")
val nextFriday = today.getNext(DayOfWeek.FRIDAY)
println("Next Friday is $nextFriday")
val nextMonday = today.getNext(DayOfWeek.MONDAY)
println("Next Monday is $nextMonday")
}
這輸出
Today (2021-11-25) is Thursday
Next Friday is 2021-11-26
Next Monday is 2021-11-29
好的,這只是您要求的一半,但我認為您能夠(幾乎)撰寫相同的方法,讓您獲得一周中的最近一天而不是即將到來的一天。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/365751.html
上一篇:W/System.err:java.time.format.DateTimeParseException:無法在索引5處決議文本“2019-12-22”
下一篇:如何剪輯影像以洗掉其填充
