这是场景。用户输入 3 种类型的输入:
1/1/2013 12:00:00 AM_5/31/2013 12:00:00 AM
1/1/2013 12:00:00 AM_
_5/31/2013 12:00:00 AM
输入用于日期范围查询。
第一个输入:由 _ 分隔符拆分:分为开始日期和结束日期。
第二个输入:由_分隔符分割:输入只是开始日期。
第三个输入:由_分隔符分割:输入只是结束日期。
输入由通用返回类型检索。
if (StringUtils.endsWithIgnoreCase(searchKey, "date")) {
String dates[] = searchValue.split("_",-1);
if (dates [0] == null)
{
long epoch = System.currentTimeMillis()/1000;
String format = "MM/dd/yyyy HH:mm:ss aaa";
dates[0] = new
java.text.SimpleDateFormat(format).format(new java.util.Date (epoch*1000));
}
else if (dates [1] == null)
{
Date dNow = new Date( );
dates[1] = DateFormat.getInstance().format(dNow);
}
String start = dates[0];
String end = dates[1];
String format = AppConstant.DATE_FORMAT;
filters.add(String.format("%s between to_date('%s', '%s') and to_date('%s', '%s')", columnKey, start, format, end, format));
}
如您所见,整个想法是:
- 如果用户没有输入开始日期,则使用纪元日期作为开始日期。
- 如果用户没有输入最后日期,则以当前日期n时间作为结束日期。
但不幸的是,这种编码不起作用。我猜问题是 Split 不存储 NULL 值,因此 if 语句不起作用。
我对 java 还是比较陌生,非常感谢任何帮助。