使用天数在日历中设置开始和结束日期

问题描述

我是Android的新手。我想使用日历并设置开始和结束日期。问题是,我只知道开始日期(今天的日期),但是结束日期是动态的,并且是基于天数的。例如,我有int = 400天,结束日期应该是这样的:开始日期+400。我该怎么办?

PS 理想情况是开始日期和结束日期在范围内。

解决方法

1-将今天的日期转换为Unix Time

2-一天是86400秒。将变量乘以该变量(即86400x400)。

3-将步骤1添加到步骤2。这是您在Unix时间中的结束日期。

4-将Unix时间转换为所需的任何类型。

,

java.time

考虑使用java.time(现代的Java日期和时间API)进行日期工作。

    ZoneId here = ZoneId.of("Europe/Tallinn");
    int numberOfDays = 400;
    
    LocalDate startDate = LocalDate.now(here);
    LocalDate endDate = startDate.plusDays(numberOfDays);
    
    System.out.format("From %s to %s%n",startDate,endDate);

我刚才运行此代码段时,输出为:

从2020-09-02到2021-10-07

优势

您询问的Calendar类设计不佳,而且已经过时。尽管可以完成这项工作,但使用起来很麻烦,对于典型的应用程序,您将需要与Date或其他类之间进行转换。

java.time更好用。

问题:java.time是否不需要Android API级别26?

java.time在较新和较旧的Android设备上均可正常运行。它只需要至少 Java 6

  • 在Java 8和更高版本以及更新的Android设备(API级别26以上)中,内置了现代API。
  • 在非Android Java 6和7中,获得ThreeTen Backport,这是现代类的backport(JSR 310的ThreeTen;请参见底部的链接)。
  • 在较旧的Android上,请使用废除旧书或Android版本的ThreeTen Backport。称为ThreeTenABP。在后一种情况下,请确保使用子包从org.threeten.bp导入日期和时间类。

链接