java - 从该月的某一天减去 x 天

标签 java selenium dayofmonth

我有一个日期,格式为 21,23,24,25.....

我想要的是从本月的当前日期减去 4 天。

下面报告了我的尝试,但它以 dd/mm/yyyy 的形式给出了日期。我只想要这一天。

Calendar cal=Calendar.getInstance();
cal.add(Calendar.DAY_OF_MONTH, -4);
Date curdteMinusFourDays=cal.getTime();
String curdteMinusFourDaysStr=curdteMinusFourDays.toString();
System.out.println(curdteMinusFourDays);

tripDate.click();

List<WebElement> listofdates=CommonBrowserSetup.driver.findElements(By.tagName("td"));
for (int i=1;i<=listofdates.size();i++){
    System.out.println(listofdates.get(i).getText());
    String d1=listofdates.get(i).getText();
    if(d1.contains(curdteMinusFourDaysStr)){
        listofdates.get(i).click();
        break;
    }
}

最佳答案

消息

  • 不要为此使用早已过时的 Calendar 类。使用现代 Java 日期和时间 API java.time
  • 有意识地选择时区并使其明确。

详细信息

以字符串形式获取四天前的月份日期的最佳方法是使用格式化程序:

    DateTimeFormatter dayOfMonthFormatter = DateTimeFormatter.ofPattern("d");
    String day = LocalDate.now(ZoneId.of("America/Winnipeg"))
            .minusDays(4)
            .format(dayOfMonthFormatter);
    System.out.println(day);

今天(12 月 19 日)运行它会打印 15

我使用的格式模式字符串为d。这将为您提供字符串 1、2、3 等。如果您需要 01、02、03,请使用 dd 获取两位数的月份日期,并根据需要添加前导零。

由于获取今天的日期是时区敏感操作,因此请决定您想要的时区,并在代码中明确说明。换句话说,如果您想要的时区不是 America/Winnipeg,请替换为该时区。

更简单一点,如果您不需要任何格式(例如前导零),也可以在没有格式化程序的情况下完成:

    int dayInt = LocalDate.now(ZoneId.of("America/Winnipeg"))
            .minusDays(4)
            .getDayOfMonth();
    String day = String.valueOf(dayInt);

无论如何,熟悉 DateTimeFormatter 可能是一项不错的投资。

java.time

Calendar 类非常古老且早已过时,Date 更是如此。 java.time,现代 Java 日期和时间 API,也称为 JSR-310,使用起来更加方便。

关于java - 从该月的某一天减去 x 天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43113407/

相关文章:

Gradle, "sourceCompatibility"vs "targetCompatibility"?

Java、Selenium webdriver TestNG "Pls Help Me"

c# - Selenium 显式等待设置自定义调用间隔?

Python Pandas - 获取特定月份的第一天和最后一天的行

java - 关于 TemporalAdjusters.lastDayOfMonth() 的用法

java - Hazelcast 实例未激活!在 3.2.1

java - 使用 DateFormat 时,am/pm 字符串未本地化/翻译

java - 在部署 Java Web 应用程序时如何知道 .properties 文件的位置以读取配置?

java - 通过 PID 进程杀死 Selenium 浏览器 [Java]