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

入力は日付範囲クエリ用です。

1 つ目の入力: _ 区切り文字で分割: 開始日と終了日に分割されます。

2回目の入力:_区切りで区切る:入力は開始日のみ。

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 形式でなければならないということです。ご覧のとおり、新しいものDate(0L)new Date()UTC 形式に変換することができました。しかし、フォーマットdates[0]dates[1]てUTCにできないようです。

UTC 時間形式に変換する方法はdates[0]ありますか? dates[1]同じラインでできますか?

試しdf.format(dates[0])ましたが、うまくいきません。

つまらないように聞こえるかもしれませんが、Java は初めてで、毎日学んでいます。

よろしくお願いします。

4

1 に答える 1

1

これらの文字列入力日付をparsenew の関数を使用してSimpleDateFormat( format を使用してMM/dd/yyyy hh:mm:ss a) 別の形式として解析すると、 to が得られ、既に持っている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))
于 2013-06-19T16:56:18.217 に答える