【发布时间】:2017-12-18 12:27:28
【问题描述】:
我的方法是:
public String changeCurrentDate(Integer variant){
String currentTime = TestApp.getInstance().getDriver().findElement(By.id("common.HeaderComponent.mainLayout.serverTimeLabel")).getText();
String currentDate = currentTime.substring(0, 10);
System.out.println("currentDate " +currentDate);
String date = null;
DateFormat df = new SimpleDateFormat("dd/mm/yyyy");
try{
Date date3 = df.parse(currentDate);
df.format(date3);
System.out.println("date3 " +date3);
Date previousDate = DateUtils.addDays(date3, variant);
date = previousDate.toString();
return date;
}catch (Exception e){
}
return date;
}
注意:currentTime 变量的值始终类似于“18/12/2017” 我期待 dd/mm/yyyy 格式的日期结果。但它总是像这样给出“Wed Jan 18 00:12:00 IST 2017”。
运行时间结果:
currentDate 18/12/2017
date3 Wed Jan 18 00:12:00 IST 2017
【问题讨论】:
-
日期本身在java中没有格式,当您调用
df.format(date3);时,此方法将返回一个由您的SimpleDateFormat格式化的字符串,但它根本不会改变date3的任何内容。所以调用 format 而不对返回值做任何事情是没有意义的。 -
为什么你认为
mm代表月份? -
我建议你不要使用早已过时的
Date类,尤其要避免臭名昭著的麻烦SimpleDateFormat类。java.time, the modern Java date and time API 使用起来更好。
标签: java selenium simpledateformat