0

文字列の時間形式を比較したいのですが、たとえば、誰かが提供した他のAPIはありますか?

public void test() {

    Stirng t1 = "10:30 AM"; // 12-hours format
    Stirng t2 = "11:30 AM"; // 12-hours format
            <or>
    Stirng t1 = "10:30"; // 24-hours format
    Stirng t2 = "11:30"; // 24-hours format

    if(t1.before(t2)) {
        System.out.println(t1 + " is before of " + t2);
    }
}
4

5 に答える 5

6

文字列の時刻形式を比較したい

あなたが本当にしなければならないのでない限り、そうしないでください。

一般的に、これは、多くのStack Overflowの質問を見て、時間の経過とともに明らかになってきたことです。データを「自然な」形式に変換するのは早ければ早いほどよいでしょう。この場合、自然なデータ形式は文字列ではなく、時刻を表すものです。

したがって、すべての文字列を解析します。理想的には、 JodaTimeとそのDateTimeFormatter.parseLocalTimeメソッドを使用してLocalTimeオブジェクトを作成します。そうすれば、それらは自然に比較可能になり、他のやりたいことにも使用できるようになります。データを可能な限り自然な形で保持し、別のマシンへのシリアル化など、どうしても必要な場合にのみ、データを文字列または他の表現に変換します。

もちろん、文字列表現をまったく避けることができれば、それはさらに良いでしょう。

于 2012-09-28T08:19:19.123 に答える
5

Joda Timeを使用して時間を解析し、比較を実行することができます。

于 2012-09-28T08:15:23.133 に答える
0

そのためのapiについては何も知りませんが、文字列を日付に変換できます

SimpleDateFormat formatter = new SimpleDateFormat("HH:mm");
Date time =  formatter.parse("11:30");

次に、メソッドを呼び出すだけですtime.compareTo(otherTime)

于 2012-09-28T08:20:31.500 に答える
0

JodaTimeをお試しください

あなたの例では、

if (new DateTime(2012, 9, 15, 10, 30).compareTo(new DateTime(2012, 9, 15, 11, 30) < 0) {
    // first is before second date
}

編集:ジョンのアドバイスの後

これは良いでしょう

if (new LocalTime(10, 30).compareTo(new LocalTime(11, 30) < 0) {
    // first time is before second time
}
于 2012-09-28T08:19:33.757 に答える
0

使用するJoda Time

DateTimeFormatter.parseLocalTimeメソッドは、ローカルタイムゾーンに対応するタイムオブジェクトを提供します。

このリンクを参照してください:

http://joda-time.sourceforge.net/

于 2012-09-28T08:41:54.207 に答える