许多编程语言都用于 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.APRIL。 Month 是公历 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 导入日期和时间类以及子包。
链接