【问题标题】:how do i get the days of the week using kotlin in android studio?我如何在 android studio 中使用 kotlin 获取星期几?
【发布时间】:2026-02-04 20:05:01
【问题描述】:

我正在尝试获取日期以将该数字放入 textView 中。例如,我们知道今天是 26 号星期三,知道了这个信息,我想把这个数字“26”放在一个 textView 中,这个 textView 将显示在一个有周历的屏幕上。所以我尝试帮助创建一个逻辑,告诉我如果是星期三,它会返回一周中的当前日期 (26),如果我告诉星期四,它会返回我 (27),以此类推整个星期。 tks。 ;)

val diaDaSemana: DayOfWeek
    diaDaSemana.get(DayOfWeek.THURSDAY)
    binding.txtNumeroQuarta = diaDaSemana.toString()

我正在尝试这种方式来度过美好的一天。

日历图片:

基本上我只想要通知星期的数字,例如,我通知你今天是星期三,然后你必须在 26 号返回给我,以便我可以将它放在 textView 中。

【问题讨论】:

  • 你所做的不起作用的原因是你的val day是调用calendar.add的结果,它没有返回任何东西,所以它只有一个kotlin.Unit的值。但我从你的描述中不明白你到底想做什么,所以我不知道还能告诉你什么。 Calendar 类已过时,您应该改用 LocalDate。你被咬是因为 Calendar 是一个可变类,这是它的众多缺点之一。
  • 基本上我想要做的是将一周中的几天添加到移动屏幕上的每周日历中。比如今天是26号,所以我想把'26'按照星期几放到textView里面。
  • 将一周中的每一天添加到周历i.stack.imgur.com/jw89K.jpg
  • 也许退后一步并仅描述您需要的确切数据会更容易解释。例如,“我想确定一周中的哪一天是给定年份的一个月的第一天。”
  • 是周历 我只查找当周的天数,比如本周是23号到29号,所以我想显示:23,24,25,26 , 27, 28, 29, 使用原生移动资源

标签: java android android-studio kotlin calendar


【解决方案1】:

您可以使用 LocalDate 执行此操作。从给定的日期(我在示例代码中将其默认设置为今天),使用TemporalAdjusters.previousOrSame 查找一周的第一天以获取最近的星期日。然后使用另一个 TemporalAdjuster 来获取下一次出现的输入星期几。

fun DayOfWeek.dayOfMonth(dateInWeek: LocalDate = LocalDate.now()): Int {
    val firstDateOfWeek = dateInWeek.with(TemporalAdjusters.previousOrSame(DayOfWeek.SUNDAY))
    val dateOfDayOfWeek = firstDateOfWeek.with(TemporalAdjusters.nextOrSame(this))
    return dateOfDayOfWeek.dayOfMonth
}

// ...

binding.txtNumeroQuarta = DayOfWeek.THURSDAY.dayOfMonth().toString()

【讨论】:

  • 好兄弟,效果很好,谢谢这正是我想要的tks
  • 在周历中准确显示了该周的数字,分别是:23、24、25、26、27、28和29
  • 干杯。感谢您澄清问题的解释。
【解决方案2】:

这是因为 add() 方法没有返回任何内容。如果您想获取月份中的某天,请尝试以下操作:

val calendar: Calendar = Calendar.getInstance()

calendar.add(Calendar.DAY_OF_MONTH, Calendar.TUESDAY)
val day= calendar.get(Calendar.DAY_OF_MONTH)

binding.txtNumeroTerca.text = day.toString()

我建议在 add() 方法中使用数字而不是工作日代码。

【讨论】:

  • 我尝试用这种方式显示当天,但它显示了一个无意义的一天,请参阅:imgur.com/a/h4A0L6j(它应该显示今天的 26)
  • 问题可能是增加天数。 Java 中的第一天是星期日,最后一天是星期六,因此星期日的值为 1,星期六为 6。如果您根据星期几添加天数,这似乎是个问题。如果今天是 26 并且您添加星期三代码 4 它返回 30。
【解决方案3】:
val day = Calendar.DAY_OF_MONTH.toString()
binding.txtNumeroTerca.text = day

【讨论】:

  • 我试过这种方式,但是返回的不是当前日期,而是月初的日期
  • 对不起,我不太明白。你能举一个预期结果的例子吗?
  • 它没有返回我期望的日期,例如我期望它返回26号,也就是今天,但它返回了3号
  • 将我的答案从 Calendar.DAY_OF_WEEK 更新为 Calendar.DAY_OF_MONTH