2017-03-12 11 views
0

私はアンドロイドでアラームアプリを構築しています。しかし、時間が正午12時であればいつでも。 12時間後に自動的にアラームが設定されます。 like私が10:00にアラームを設定している場合は22:00に設定します。 14:00にアラームを設定すると、翌日02:00にアラームが設定されます。 このエラーは、Androidの時計に12.xxと表示されている場合にのみ発生します。12時間後、アラームアンドロイドアプリで12時間後にアラームが設定されています:xx PM

ボタンのテキストから時刻と日付を取ります。 ここにコードとログがあります。

Date today = c.getTime(); 

       setAlarmTimeAndDate = Calendar.getInstance(); 
       setAlarmTimeAndDate.set(Calendar.DATE, Integer.parseInt(saveDateButton.getText().toString().substring(0, 2))); 
       setAlarmTimeAndDate.set(Calendar.MONTH, Integer.parseInt(saveDateButton.getText().toString().substring(3, 5)) - 1); 
       setAlarmTimeAndDate.set(Calendar.YEAR, Integer.parseInt(saveDateButton.getText().toString().substring(6, 10))); 
       setAlarmTimeAndDate.set(Calendar.HOUR, Integer.parseInt(saveTimeButton.getText().toString().substring(0, 2))); 
       setAlarmTimeAndDate.set(Calendar.MINUTE, Integer.parseInt(saveTimeButton.getText().toString().substring(3, 5))); 

       Log.d("currentDateAndTime", c.getTime().toString()); 
       Log.d("ButtonDateAndTime|alarm", saveDateButton.getText().toString() 
         + "|" + saveTimeButton.getText().toString() 
         + "|" +setAlarmTimeAndDate.getTime().toString()); 

ログ:

03-12 02:31:39.814 6896-6896/com.codedweeb.notesandmemo D/currentDateAndTime: Sun Mar 12 02:31:28 GMT+05:30 2017 
03-12 02:31:39.814 6896-6896/com.codedweeb.notesandmemo D/ButtonDateAndTime|alarm: 12/03/2017|03:30 AM|Sun Mar 12 03:30:39 GMT+05:30 2017 

    03-12 12:33:20.366 6896-6896/com.codedweeb.notesandmemo D/currentDateAndTime: Sun Mar 12 12:33:18 GMT+05:30 2017 
03-12 12:33:20.366 6896-6896/com.codedweeb.notesandmemo D/ButtonDateAndTime|alarm: 12/03/2017|03:30 AM|Sun Mar 12 15:30:20 GMT+05:30 2017 

私は自分の携帯電話の時間を変更し、それが12時間遅れてアラームを置きます。

+0

コードを正しくフォーマットしてください。 「今日の日」とは何ですか? –

+0

今日の日付はDate変数で、cは現在の日付と時刻のカレンダーのインスタンスです。 これは、ユーザが過去にアラームを設定しているかどうかを確認するために使用されます。 これは、今日、ユーザがアラームを設定している日付と時刻の値です。 @BasilBourque –

+0

私は質問TBHを理解していません。 – JonZarate

答えて

2

Calendar.HOURの代わりにCalendar.HOUR_OF_DAYを使用する必要があります。この問題は、12時間から24時間の間に直面している必要があります。 Calendar.HOURは12時間制で使用され、Calender.HOUR_OF_DAYは24時間制で使用されます。

12時間後にカレンダーオブジェクトの新しいインスタンスが消去されると、PM(12時以降)の時刻にCalender.HOURを3に設定しようとしたため、PMは3時間、平均15時間になります。

+0

に与えてくれました。どうもありがとう。 エラーが発生した場合は、引き続き確認してお知らせします。 現在、考えられるすべての時間の組み合わせをテストしました。 –

0

AMとPMを特定して時間をテキスト文字列として返す、時間に基づく簡単な計算があります。コードは次のとおりです。

timeString=""; 
int hour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY); 
if (hour == 0) { 
    timeString = "12AM (Midnight)"; 
} else if (hour < 12) { 
    timeString = hour +"AM"; 
} else if (hour == 12) { 
    timeString = "12PM (Noon)"; 
} else { 
    timeString = hour-12 +"PM"; 
} 
+0

私はすでにこれを適用していますが、何とかアンドロイドのどこかで正しく動作しませんでした。 JavaコンパイラでJavaメソッドをテストしましたが、うまくいきました。多分バグは分かりません。しかし、上記の解決策は問題なく、私の問題を解決しました。答えをありがとう。 –

関連する問題