2016-11-01 7 views
-3

私は、選択した時間に複数のアラームが発生するアラームアプリケーションを開発中です。今問題は、現在の時刻とアラーム時刻(ユーザーが選択した時刻)の時間差を計算したいということです。現在の時刻と、スレッドを使用せずにユーザーが選択したアラーム時刻との間の時間差をどのように計算することができますか。時間を直接計算する時間差の方法はありますか?時差の計算、android

+0

がlong' 'に2回を変換し、いくつかの減算を行いミリ秒を取ることなく行うことができます。 – Enzokie

+0

thats明白な#enzokieしかし、私はちょうど私が探していたものを見つけた..とにかく感謝...ここにこれを行う簡単な方法です。 http://stackoverflow.com/questions/3352031/calculate-time-between-two-times-android –

+0

これまでの私と同じアプローチです。 – Enzokie

答えて

0

これは2回の違いを示します。

try { 
    Date _day = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss", Locale.ENGLISH).parse(nowTime); 
    Date day = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss", Locale.ENGLISH).parse(alarmTime); 

    double diff = day.getTime() - _day.getTime() ; 

    double totalMinuts = diff/(60 * 1000); 
    double leftMinutsAfterHours = totalMinuts % 60; 
    double totalHours = (totalMinuts - leftMinutsAfterHours)/60; 

    double leftHoursAfterDays = totalHours % 24; 
    double totalDays = (totalHours - leftHoursAfterDays)/24; 

} catch (ParseException e) { 
    e.printStackTrace(); 
} 
+0

vidulaJに感謝します。これは今まで私が見つけた最高の解決策です。私は実装し、その正常に動作します。 –

+0

素晴らしい!知ってよかった! – vidulaJ

0

あなたがTimePickerDialogを使用している場合は、オブジェクト

をCalanderに時間を変換します。

Calander c=Calander.getinstance(); 

集合時間とminuits

その後、ミリ秒を取ります。

次に、diffeneceを取る。

long differnce=pickedTimeInMillis- currentTimeInMillis; 

long diffenceInSeconds=diffenrce/1000; 
int differnceInMin=deffernce/(1000*60) 
int differnceInHour=deffernce/(1000*60*60) 

それとも

Calander currentTime=Calander.getinstance(); 
hour=c.get(Calendar.HOUR_OF_DAY) 
Calander selectedTime=selectedTimeFromCalander; 

int differnce=selectedTime.get(Calendar.HOUR_OF_DAY)-hour 
+0

私は、違いを見つけることは.... inMillisを使わないでいるべきだと言います。 –

+0

をご確認ください。私はそれを試していない、ただ書きました。絶対値をとってください。時間は12時間形式ですので、AmまたはPmでチェックしてください – Godwin