私は、Androidのアプリケーション用に、イベント登録が次の時間にあるかどうかをチェックするコードを書いています。これを行うために、私は現在の時間を得て、それに60分を追加して、時間スロットの終了時間を取得します。このコードはうまく動作しますが、開始時刻が23:11で終了時刻が00:11の場合は、60分のタイムスロットが翌日にラップすると動作しません。私の日付オブジェクトを調べると、私はAndroidスタジオが私のDateオブジェクトに何らかの日付情報(1月1日)があると言いました。時間情報だけを持つように私の時間形式を指定したので、これは奇妙です。現在の時間がタイムスロットの間であるかどうかをチェック
DateFormat timeFormat = new SimpleDateFormat("hh:mm aa", Locale.ENGLISH);
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
DateFormat scanDateFormat = new SimpleDateFormat("yyyy/MM/dd");
//Some logic has been cut out
if (currentEventRegistrations.size() > 0) {
//We need to check for the earliest events
Event earliestEvent = null; //Keep a reference to the earlist event
for (int a = 0; a < currentEvents.size(); a++) {
Event thisEvent = currentEvents.get(a);
if (a == 0) {
earliestEvent = thisEvent;
} else {
Date nextEventDate = timeFormat.parse(thisEvent.getTime());
Date currentEventDate = timeFormat.parse(earliestEvent.getTime());
if (nextEventDate.compareTo(currentEventDate) <= 0) {
earliestEvent = thisEvent;
}
}
}
//Now that we have the earliest event happening today, we need to check if it is within 30 minutes
earliestEvent.setTime(earliestEvent.getTime().toUpperCase());
Date earlyEventDate = timeFormat.parse(earliestEvent.getTime());
Calendar now = Calendar.getInstance();
Date later = now.getTime();
String time = timeFormat.format(later);
now.add(Calendar.MINUTE, 60);
String timeEnd = timeFormat.format(now.getTime());
Date laterStart = timeFormat.parse(time);
Date laterEnd = timeFormat.parse(timeEnd);
if (earlyEventDate.compareTo(laterStart) >= 0 && earlyEventDate.compareTo(laterEnd) <= 0)
{ //If the event is in the next 30 minute time frame, save all the event data
finalEvent = earliestEvent;
finalEventRegistration = getEventRegistration(earliestEvent.getEventId());
finalRoute = getRoute(finalEventRegistration.getSelectedRoute());
if (finalEvent!= null && finalEventRegistration != null && finalRoute != null) {
return true;
} else {
return false;
}
}
時間文字列を時間オブジェクトに変換するにはどうすればよいでしょうか?また、次の日に重複する可能性のある時間枠を扱う最善の方法は何でしょうか?
申し訳ありませんが、単純なタイムスタンプを使用していない理由は何ですか? – user3621165