1

この文字列から秒を削除しようとしています:

10/31/2009 9:46:16 AM

私はこれを行うために次の関数を使用しようとしています:

public static String correctValue4(String str) {
    String parts[] = str.split(":");
    String fixedStr = parts[0] + ":" + parts[1];
    return fixedStr;
}

私はそれを解析して2009年10月31日9を取得し、最後に46を追加すると考えました。ただし、実行時に「java.lang.ArrayIndexOutOfBoundsException:1」エラーが発生します。明らかに、それは部品を拾っていません[1]。

何か案は?

追加のカルマの場合:文字列の最後にAM/PMを追加する必要があります。したがって、最終的には次のようになります。

10/31/2009 9:46 AM

ありがとう、あなたの助けは大歓迎です=)

編集:

申し訳ありませんが、日付についてはもっと具体的にすべきでした。私がやっていることは、タブ区切りのテキストファイルをアプリケーションに受け入れ、それをフォーマットして新しいファイルに出力することです。私がする必要があったのは、要求に従って日付から秒を削除し、それを出力することだけでした。私はそれを複雑にしすぎていたと思います。

この場合、ティムの答えはうまくいきました!

提案してくださった皆様、ありがとうございました!

4

4 に答える 4

6

別のアプローチを完全にアドバイスします。値を適切なドメイン固有のタイプ(Joda TimeLocalDateTimeから使用します)に解析してから、必要な形式に再フォーマットします。これにより同時に検証が実行されるため、コロンが含まれているという理由だけでシステム全体に不正なデータを伝播することはありません。

Joda Timeは、解析およびフォーマット機能(DateTimeFormatおよびを参照DateTimeFormatter)を提供するため、非常に単純なはずです。

于 2012-04-28T16:15:57.217 に答える
4

SimpleDateFormatを使用してみませんか?

最初に日付を解析します:

Date d = new SimpleDateFormat("MM/dd/yyyy h:mm:ss a").format(str);

次に、日付をフォーマットします。

new SimpleDateFormat("MM/dd/yyyy h:mm a").format(d);

于 2012-04-28T16:18:13.720 に答える
1

スペースが次の文字である場合、2桁の数字が続くコロンを削除するだけではいけませんか?

String resultString = subjectString.replaceAll(":\\d{2}(?= )", "");
于 2012-04-28T16:14:09.707 に答える
1

文字列が常に同じ形式(秒は2桁で終わり、スペースとAMまたはPM)の場合は、substringStringインスタンスで使用可能なメソッドを使用して、関連する部分を抽出できます。

String original = "10/31/2009 9:46:16 AM";
//-6 since we want to remove the : as well
String firstPart = original.substring( 0, original.length() - 6 );
String secondPart = original.substring( original.length() - 3, original.length() );
String result = firstPart + secondPart;
于 2012-04-28T16:19:44.780 に答える