我正在制作一个日期过滤器,我已经为其创建了一个自定义方法,用于以特定日期格式解析日期。 我有两种格式的日期dd MMM yyyy& yyyy-mm-dd在单个方法中传递以进行解析并以yyyy-mm-dd的格式返回。 由于我在结尾处有一个复杂的结构,因此两种格式化的字符串都将采用日期解析方法。
ISSUE ::当格式为yyyy-mm-dd时,我从此方法返回一个空字符串。请提供我错误的输入。以下是代码
//fetching date from methods
String current_date=CurrentFilterPeriod.dateParsing("2017-04-02");
String prev_date=CurrentFilterPeriod.dateParsing("01 Apr 2017");
//singleton file for date filter method
public class CurrentFilterPeriod {
private static Calendar cal = getInstance();
private static Date current_date = cal.getTime();
//defined formats for date
private static SimpleDateFormat formatter = new SimpleDateFormat("dd MMM yyyy");
private static SimpleDateFormat formatterString = new SimpleDateFormat("yyyy-MM-dd");
//method for parsing date
public static String dateParsing(String date){
Date newDate;
String returnDate = "";
if (date.equals(formatter.toPattern())){
returnDate=date;
}
Log.e("DB","date===>"+date);
try {
newDate = formatter.parse(date);
Log.e("DB","New Date===>"+newDate);
returnDate=formatterString.format(newDate);
Log.e("DB","returnDate===>"+returnDate);
} catch (ParseException e) {
e.printStackTrace();
}
return returnDate;
}
}
RESULT :: current_date ="" prev_date =" 2017年4月1日"
我被困在这里请帮助我或告诉我其他方法来获得所需的输出。想要以yyyy-mm-dd格式的结果
答案 0 :(得分:1)
如您所希望的结果格式:yyyy-mm-dd
。您需要使用formatterString
格式化程序检查日期字符串。
使用以下代码更改您的代码:
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
boolean isValidDate(String input) {
try {
format.parse(input);
return true;
}
catch(ParseException e){
return false;
}
}
现在使用以下方法调用方法:
//method for parsing date
public static String dateParsing(String date) {
Date newDate;
String returnDate = "";
if (isValidDate(date)) {
returnDate = date;
return returnDate;
} else {
Log.e("DB", "date===>" + date);
try {
newDate = formatter.parse(date);
Log.e("DB", "New Date===>" + newDate);
returnDate = formatterString.format(newDate);
Log.e("DB", "returnDate===>" + returnDate);
} catch (ParseException e) {
e.printStackTrace();
}
}
return returnDate;
}