你如何创建一个日期,只获得一个月?

时间:2018-04-22 17:57:13

标签: android simpledateformat android-date

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

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

1 个答案:

答案 0 :(得分: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));

打印出来:

  

我不知道六月是菲律宾的Hunyo。我现在知道了。提供不同的区域设置以使用其他语言获取月份名称。

是的,当我们使用SimpleDateFormat及其现在已经过时的朋友时,很多教程和其他页面仍然存在。你最好的选择是忽略它们。

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

是的,java.time适用于较旧和较新的Android设备。它只需要至少Java 6

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

链接