【问题标题】:How do you get create a date and get only the month?您如何创建日期并仅获取月份?
【发布时间】:2018-04-22 17:57:12
【问题描述】:

在android中约会的正确方法是什么? “日期日期 = 新日期,日期 = 1995/06/10”?

另外,我如何获得只有日期的月份?周围的大多数教程都有一个带有“YYYY-MMD-dd HH mm ss”的简单日期格式,但是我如何只抓取“MMM”?

【问题讨论】:

标签: android simpledateformat android-date


【解决方案1】:

许多编程语言都用于 Android 编程。由于您提到过时的 SimpleDateFormat 类,我假设您使用的是 Java,如果不是该语言,那么至少是 Java 平台/运行时。然后我热烈推荐java.time,现代Java 日期和时间API。例如,使用 Java:

    LocalDate today = LocalDate.now(ZoneId.of("Asia/Manila"));
    LocalDate backThen = LocalDate.of(1995, Month.JUNE, 10);

由于地球上任何地方的日期都不会相同,因此请确保指定所需的时区以获取今天的日期。 LocalDate 是没有时间的日期。

仅获取用于您的程序的月份:

    Month m = today.getMonth();

刚才运行我的代码返回了Month.APRILMonth 是公历 12 个月的枚举。

如果您只想向用户打印月份,您的格式模式字符串应该只包含 MMM(或 MMMM 用于完整月份名称):

    DateTimeFormatter monthFormatter 
            = DateTimeFormatter.ofPattern("MMM", Locale.forLanguageTag("fil-PH"));
    System.out.println(backThen.format(monthFormatter));

这个打印出来的:

我不知道 June 在菲律宾是 Hunyo。我现在知道了。提供不同的语言环境以获取不同语言的月份名称。

是的,从我们使用SimpleDateFormat 和它现在早已过时的朋友开始,很多教程和其他页面仍然存在。最好的办法是忽略它们。

问题:我可以在 Android 上使用 java.time 吗?

是的,java.time 在较旧和较新的 Android 设备上运行良好。它只需要至少 Java 6

  • 在 Java 8 及更高版本以及更新的 Android 设备上(据我所知,从 API 级别 26 开始)现代 API 是内置的。
  • 在 Java 6 和 7 中,获取 ThreeTen Backport,即新类的后向端口(对于 JSR 310,ThreeTen;请参阅底部的链接)。
  • 在(较旧的)Android 上使用 ThreeTen Backport 的 Android 版本。它被称为 ThreeTenABP。并确保从 org.threeten.bp 导入日期和时间类以及子包。

链接

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多