如何使用 SimpleDateFormat 获取所需的日期格式
How to get a required Date format using SimpleDateFormat
我的方法是:
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
df.format 只是 returns 应用了格式的日期的字符串表示形式,因此代码中的行无效。
尝试更改您的代码以改为使用格式化输出:
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);
DateFormat df = new SimpleDateFormat("dd/mm/yyyy");
Date date3 = df.parse(currentDate);
System.out.println("date3 " + df.format(date3));
Date previousDate = DateUtils.addDays(date3, variant);
return previousDate.toString();
}
此外 - 捕获异常很糟糕,所以你应该删除它。
您应该return 格式化日期,而不是日期的 toString()。试试这个:
Date previousDate = DateUtils.addDays(date3, variant);
return df.format(previousDate);
我们应该始终尝试找出更方便的方式,以便我们进一步使用它。在这种情况下,我们可以使用以下方法:
public String dateString(String input) {
SimpleDateFormat parser = new SimpleDateFormat("EEE MMM d HH:mm:ss zzz yyyy");
String formattedDate = "";
try {
Date date = parser.parse(input);
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
formattedDate = formatter.format(date);
} catch (ParseException e) {
e.printStackTrace();
}
return formattedDate;
}
您可以像下面这样轻松调用此方法:
Date date3 = df.parse(currentDate);
df.format(date3);
String input = date3.toString();
String requiredDate = dateString(input);
System.out.println("requiredDate: "+ requiredDate);
returns 输出如下:
requiredDate: 18/12/2017
我的方法是:
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
df.format 只是 returns 应用了格式的日期的字符串表示形式,因此代码中的行无效。
尝试更改您的代码以改为使用格式化输出:
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);
DateFormat df = new SimpleDateFormat("dd/mm/yyyy");
Date date3 = df.parse(currentDate);
System.out.println("date3 " + df.format(date3));
Date previousDate = DateUtils.addDays(date3, variant);
return previousDate.toString();
}
此外 - 捕获异常很糟糕,所以你应该删除它。
您应该return 格式化日期,而不是日期的 toString()。试试这个:
Date previousDate = DateUtils.addDays(date3, variant);
return df.format(previousDate);
我们应该始终尝试找出更方便的方式,以便我们进一步使用它。在这种情况下,我们可以使用以下方法:
public String dateString(String input) {
SimpleDateFormat parser = new SimpleDateFormat("EEE MMM d HH:mm:ss zzz yyyy");
String formattedDate = "";
try {
Date date = parser.parse(input);
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
formattedDate = formatter.format(date);
} catch (ParseException e) {
e.printStackTrace();
}
return formattedDate;
}
您可以像下面这样轻松调用此方法:
Date date3 = df.parse(currentDate);
df.format(date3);
String input = date3.toString();
String requiredDate = dateString(input);
System.out.println("requiredDate: "+ requiredDate);
returns 输出如下:
requiredDate: 18/12/2017