0

Calendar に変換された文字列が今より前か後かをテストしたい。これが機能しない理由がわかりません:

public final static SimpleDateFormat DATE_FORMAT_RESERVATION_HOUR = new SimpleDateFormat("HH:mm");    
String str = "14:00";

Calendar now = Calendar.getInstance();
Calendar selected = Calendar.getInstance();
//avoiding try/catch in this post
selected.set(Calendar.HOUR_OF_DAY, (int) DATE_FORMAT_RESERVATION_HOUR.parse(str).getTime());
// selected = now : 7352-05-18 00:49:33 (instead of 2013-06-17 14:00:00
Log.d("test", "after?" + selected.after(now));

「選択」を今にしたいのですが、時間はstrで指定します。どんな助けでも大歓迎です!ありがとう

4

1 に答える 1

1

これが機能しない理由がわかりません:

getTime() :

この Date オブジェクトが表す 1970 年 1 月 1 日 00:00:00 GMT からのミリ秒数を返します。

これは、目的の結果を得るために設定したい値ではありませんCalendar.HOUR_OF_DAY

  1. あなたのケースでは非推奨のgetHours()を使用できます:

    selected.set(Calendar.HOUR_OF_DAY, 
               (int) DATE_FORMAT_RESERVATION_HOUR.parse(str).getHours());
    

2.変数strが常にその形式である場合は、次のこともできます。

    selected.set(Calendar.HOUR_OF_DAY, Integer.parseInt(str.split(":")[0]));
于 2013-06-17T12:14:05.693 に答える