我的日期是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;
}
}
答案 0 :(得分:1)
讯息强>
Calendar
类。使用java.time
,现代Java日期和时间API。<强>详情
四天前以字符串形式获取日期的镀金方式是使用格式化程序:
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
获取两位数的日期,并根据需要使用前导零。
由于今天的日期是时区敏感操作,因此请确定您想要的时区,并在代码中明确说明。换句话说,如果碰巧不是美国/温尼伯,请替换您想要的时区。
如果您不需要任何格式化(如前导零),也可以在没有格式化程序的情况下完成更多的准系统:
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,可以更好地使用。
答案 1 :(得分:0)
你应该做
System.out.println(calendar.get(Calendar.DAY_OF_MONTH)); //after you have subtracted
答案 2 :(得分:0)
尝试下面的代码,它将以月中某天的形式提供结果
例如:如果今天的日期是30,那么下面的代码将输出为26。
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_MONTH, -4);
System.out.println(cal.get(Calendar.DAY_OF_MONTH));
让我知道它是否对你有所帮助。
答案 3 :(得分:0)
将当月的当天作为int。然后减去4.如果结果是否定的,那么您应该添加上个月的天数。
import java.util.Calendar;
public class Main2 {
public static void main(String args[])
{
Main2 m = new Main2();
Calendar cal = Calendar.getInstance();
int result;
cal.set(Calendar.MONTH, Calendar.DECEMBER);
cal.set(Calendar.DAY_OF_MONTH, 11);
result = m.substractFromCurrentDay(cal, 4);
System.out.println(result);//prints 7
cal.set(Calendar.DAY_OF_MONTH, 1);
result = m.substractFromCurrentDay(cal, 4);
System.out.println(result);//prints 27
}
public int substractFromCurrentDay(Calendar cal, int daysToSubstract)
{
int currentDay = cal.get(Calendar.DAY_OF_MONTH);
int result;
result=currentDay-daysToSubstract;
if(result<=0)
{
cal.add(Calendar.MONTH, -1);//go to last month
int lastMonthDays = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
result=result+lastMonthDays;
}
return result;
}
}