2016-11-29 3 views
-1

私はアプリケーションで2つのJSpinnerコントロールを使用して、ユーザーが24時間のHH:mm形式を入力できるようにしています。終了時刻が開始時刻の後に来るかどうかを確認しようとしています。しかし、それは期待どおりに動作していないようです。これを行う正しい方法は何か助けてください。JSpinnerを使用して入力として取った時間を比較する方法は?

マイスピンコントロールは、次のようになります

Calendar calendar = Calendar.getInstance(); 
calendar.set(Calendar.HOUR_OF_DAY, 24); 
calendar.set(Calendar.MINUTE, 0); 
calendar.set(Calendar.SECOND, 0); 
startModel.setValue(calendar.getTime()); 
JSpinner spnStartTime = new JSpinner(startModel); 
JSpinner.DateEditor editor = new JSpinner.DateEditor(spnStartTime, "HH:mm"); 
DateFormatter formatter1 =(DateFormatter)statTimeEditor.getTextField().getFormatter();   
formatter1.setAllowsInvalid(false); 
formatter1.setOverwriteMode(true); 
spnStartTime.setEditor(statTimeEditor); 

私もspnEndTimeのために同じことをしました。

そして、これは私が今やろうとしていますものです:

SimpleDateFormat parser = new SimpleDateFormat("EE MMM dd HH:mm:ss z yyyy",Locale.ENGLISH); 
Date st=parser.parse(String.valueOf(spnStartTime.getValue())); 
Date en=parser.parse(spnEndTime.getValue().toString()); 
if(en.after(st)) 
{ 
    //do stuff 
} 
else 
{ 
    //display error 
} 

しかしspnStartTime.getValue()は、1970年に日付を返し、私のエディタは現在の年に設定されています。だから、私の日付比較は期待どおりには機能しません。

私はst.setHours(Calendar.getInstance()。getTime()。getHours())を使用しようとしました。同様に 'en'も同様です。しかしgetHours()は廃止されました。では、これには適切な回避策はありますか?

+0

すぐに役立つようにするには、[MCVE]または[短く、自己完結型の正しい例](http://www.sscce.org/)を投稿してください。 –

+0

短い注記では、2つのJSpinnerコントロールからのユーザー入力として取得された(HH:mm)時間値を比較するにはどうすればよいですか?そして、Dateオブジェクトから時間と分の部分だけを取得するにはどうすればいいですか?これらの援助は私にとって大きな価値があります。 – developer3

+0

最後に私は別の質問を投稿しました。人々は私が誰かを助けなければならない場合、より詳細なコードを投稿するべきだとコメントしました。だから今度は詳細を投稿してみました。私は正確に何を投稿すべきですか? – developer3

答えて

0

calendarオブジェクトでは、時刻は設定するだけで日付は設定しません。したがって、モデルの日付は変更されません:1970-01-01。また、年、月、日を設定します。 How to use Spinnersもご覧ください。

+0

私が理解したことから、私がcalender = Calendar.getInstance();を呼び出すと、現在の日付と時刻をカレンダーに設定します。そうじゃない?また、calender.getTime()の値を出力しようとしたとき、現在の年と月が表示されていました。 – developer3

関連する問題