从自定义日期方法获取空白日期作为字符串

时间:2018-02-12 11:02:28

标签: java android date datetime pattern-matching

我正在制作一个日期过滤器,我已经为其创建了一个自定义方法,用于以特定日期格式解析日期。 我有两种格式的日期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格式的结果

1 个答案:

答案 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;
}