在文本视图中显示本地日期 (Kotlin)

Display local date in textview (Kotlin)

我正在尝试在文本视图中显示本地日期(即 2021 年 9 月 14 日,星期二),但我很难找到实现它的方法。有什么提示或想法吗?

您可以使用 SimpleDateFormat class 来格式化日期。 要实现您指定的格式,请使用:

textView.text = SimpleDateFormat("EEEE, MMMM dd, yyyy").format(Date())

要了解不同日期和时间模式的含义,请查看 this link。

试试这个代码

val sdf = SimpleDateFormat("EEE, MMMM dd, yyyy")
val current = sdf.format(Date())

textView.text = "$current"

谢谢大家!这两种解决方案都有效:

解决方案 1:

    val dateDisplay: TextView = findViewById(R.id.date)
    dateDisplay.text = SimpleDateFormat("EEEE, MMMM dd, yyyy").format(Date())

解决方案 2:

        val sdf = SimpleDateFormat("EEE, MMMM dd, yyyy")
        val current = sdf.format(Date())
        val dateDisplay: TextView = findViewById(R.id.date)
        dateDisplay.text = "$current"

java.time 和内置的本地化格式

考虑使用 java.time,现代 Java 日期和时间 API,作为你的约会工作。请原谅我的 Java 语法。声明格式化程序:

private static final DateTimeFormatter DATE_FORMATTER
        = DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL).withLocale(Locale.US);

这样使用:

    LocalDate today = LocalDate.now(ZoneId.systemDefault());
    String text = today.format(DATE_FORMATTER);
    System.out.println(text);

今天 运行 时,输出为:

Wednesday, September 15, 2021

现在按照其他答案中的描述将此文本分配到您的 TextView 中。

您不仅要避免麻烦 SimpleDateFormat class,还要避免编写自己的格式模式字符串,因为这很容易出错。您的愿望与您的用户希望看到以适合其语言环境的适当格式打印的日期的愿望密切相关。在上面的代码中我使用了 Local.US 来演示。在实际代码中,您将希望省略该位。然后格式化程序将采用设备的默认区域设置,所有区域设置的用户都会很高兴。就像这样:

private static final DateTimeFormatter DATE_FORMATTER
        = DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL);

问题:java.time 不需要 Android API 26 级吗?

java.time 在新旧 Android 设备上都能很好地工作。它只需要至少 Java 6.

  • 在 Java 8 和更高版本以及较新的 Android 设备(从 API 级别 26)中内置现代 API。
  • 在非Android Java 6 和 7 中获取 ThreeTen Backport,现代 classes 的 backport(ThreeTen 用于 JSR 310;请参阅底部的链接) .
  • 在较旧的 Android 上使用脱糖或 ThreeTen Backport 的 Android 版本。它叫做 ThreeTenABP。在后一种情况下,请确保使用子包从 org.threeten.bp 导入日期和时间 classes。

链接