这是场景。用户输入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
输入用于日期范围查询。
第一个输入:用_分隔符分隔:分为开始日期和结束日期。
第二个输入:用_分隔符分隔:输入仅是开始日期。
第三次输入:用_分隔符分隔:输入仅是结束日期。
通过通用返回类型检索输入
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格式。如您所见,我已经设法将新的
Date(0L)
和new Date()
转换为UTC格式。但是我似乎无法将
dates[0]
和dates[1]
格式化为UTC。任何想法如何将
dates[0]
和dates[1]
转换为UTC时间格式?可以在同一行中完成吗?我尝试了
df.format(dates[0])
,但是它不起作用。很抱歉,如果我听起来像是点头,但是我是Java新手,每天都在学习。
在此先感谢。
最佳答案
在新的parse
上使用SimpleDateFormat
函数将字符串输入日期解析为其他格式(使用格式MM/dd/yyyy hh:mm:ss a
),这将为您提供一个Date
,然后将其传递给format
已经有。
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))