サーバーに膨大なデータセットが保存されており、さまざまな行に20以上の異なる形式の日付が含まれています。それらを 1 つの一般的な形式に変換したいと考えています。どうすればそれを達成できますか?形式ごとに個別の関数を記述する必要がありますか、それとも任意の形式の日付を読み取って特定の形式に変換できるスーパー関数がありますか。
質問する
2052 次
3 に答える
1
Perl では、Date::Parse モジュールが、任意の文字列から使用可能な日付情報を抽出するという非常に見事な仕事をします。
doco から ( http://metacpan.org/pod/Date::Parse ) :
以下は、Date::Parse で解析できることが知られている日付のサンプル リストです。
1995:01:24T09:08:17.1823213 ISO-8601
1995-01-24T09:08:17.1823213
Wed, 16 Jun 94 07:29:35 CST Comma and day name are optional
Thu, 13 Oct 94 10:13:13 -0700
Wed, 9 Nov 1994 09:50:32 -0500 (EST) Text in ()'s will be ignored.
21 dec 17:05 Will be parsed in the current time zone
21-dec 17:05
21/dec 17:05
21/dec/93 17:05
1999 10:02:18 "GMT"
16 Nov 94 22:28:20 PST
于 2013-09-16T09:39:03.030 に答える
0
はい、Java では単純な dateFormatter にハードコーディングされたフォーマットを定義して使用する必要があります。これで、すべての形式を 1 つのコードに収めるオプションがいくつかあります。
- 次のように、各形式を保存できる構成可能なプロパティ/CSV ファイルを作成します。
oldFormat1;newFormat1 oldFormat2;newFormat2 oldFormat3;newFormat3 oldFormat4;newFormat4 oldFormat5;newFormat5
(あなたの場合、新しいフォーマットはすべて同じになります)
java プログラムからプロパティ ファイルを読み取り、これらの結果を変数に取得します。たとえば
Map<String><String>
、上記のペアをキーと値として保持します。SimpleDateFormat#formatを使用して日付をフォーマットします
DateFormat originalFormat = new SimpleDateFormat(old_format, Locale.ENGLISH); DateFormat targetFormat = new SimpleDateFormat(new_format); Date date = originalFormat.parse("August 21, 2012"); // parse date from database, where date format is MMMM dd, yyyy String formattedDate = targetFormat.format(date); // 20120821
これらの手順で要件が満たされることを願っています。
于 2013-09-16T04:30:36.447 に答える