2013-06-19 118 views
1

以下是该场景。用户输入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 

输入用于日期范围查询。

第一个输入:按_分隔符分割:分成开始日期和结束日期。

第二个输入:按_分隔符分割:输入只是开始日期。

第3个输入:按_分隔符分割:输入仅为结束日期。

输入由通用返回类型

String dbFormat = AppConstant.DB_DATE_FORMAT; 
String format = AppConstant.DATE_FORMAT; 
SimpleDateFormat df = new SimpleDateFormat(format); 
df.setTimeZone(TimeZone.getTimeZone("UTC")); 
String dates[] = searchValue.split("_", -1); 
String start = "".equals(dates[0]) ? df.format(new Date(0L)) : dates[0]; 
String end = "".equals(dates[1]) ? df.format(new Date()) : dates[1]; 
filters.add(String.format("%s between to_date('%s', '%s') and to_date('%s', '%s')", columnKey, start, dbFormat, end, dbFormat)); 

,我需要帮助的,对于变量的开始和结束的日期应该在UTC format.As你们可以看到,我已经将部分检索设法将新的Date(0L)new Date()转换为UTC格式。 但我似乎不能格式化为dates[0]dates[1]到UTC。

任何想法如何将dates[0]dates[1]转换为UTC时间格式?它可以在同一行中完成吗?

我试过df.format(dates[0])但它不工作。

对不起,如果我可能听起来像一个nood,但我是新来的java,我每天都在学习。

非常感谢提前。

回答

1

使用上了一个新的SimpleDateFormat功能parse(使用格式MM/dd/yyyy hh:mm:ss a)解析那些字符串输入日期是不同的格式,并且会给你一个Date到随后进入formatSimpleDateFormat你已经离开。

String dbFormat = AppConstant.DB_DATE_FORMAT; 
String format = AppConstant.DATE_FORMAT; 
SimpleDateFormat df = new SimpleDateFormat(format); 
SimpleDateFormat df2 = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss a"); 
df.setTimeZone(TimeZone.getTimeZone("UTC")); 
String dates[] = searchValue.split("_", -1); 
String start = "".equals(dates[0]) ? df.format(new Date(0L)) : df.format(df2.parse(dates[0])); 
String end = "".equals(dates[1]) ? df.format(new Date()) : df.format(df2.parse(dates[1])); 
filters.add(String.format("%s between to_date('%s', '%s') and to_date('%s', '%s')", columnKey, start, dbFormat, end, dbFormat)) 
+0

非常感谢cmbaxter ...另一个教训:) –