2016-07-01 12 views
0

Ich habe auf einer Anwendung gearbeitet, die Zeitdifferenz berechnet und haben diese wirklich wierd Problem, das Emulator und Gerät geben unterschiedliche Ergebnisse.Emulator und Geräte geben unterschiedliche Ergebnisse

Wenn die Zeit 22.00 zu 22.45 auf dem emaulator gesetzt ist der Unterschied . Wenn ich das gleiche tun, wenn ich auf dem Gerät laufen ich

Dank.

UPDATE

hier Code ist, wie ich die Stunden/min

public int theTimeMachineHours(EditText a, EditText b) throws Exception{ 
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm"); 
    Date startDate = simpleDateFormat.parse(a.getText().toString()); 
    Date endDate = simpleDateFormat.parse(b.getText().toString()); 

    long difference = endDate.getTime() - startDate.getTime(); 
    if(difference<0) 
    { 
     Date dateMax = simpleDateFormat.parse("24:00"); 
     Date dateMin = simpleDateFormat.parse("00:00"); 
     difference=(dateMax.getTime() -startDate.getTime())+(endDate.getTime()-dateMin.getTime()); 
    } 
    int days = (int) (difference/(1000*60*60*24)); 
    int hours = (int) ((difference - (1000*60*60*24*days))/(1000*60*60)); 
    int min = (int) (difference - (1000*60*60*24*days) - (1000*60*60*hours))/(1000*60); 

    return hours; 
} 

UPDATE berechnen 2

Hier ist der Code von einem Teil in den Code, in dem die Zeitmaschine Methode ist, genannt:

if(restFrom2Day1.length()!=0){ 
     sendBreakHour2Day1 = ""+theTimeMachineHours(restFrom2Day1,restTo2Day1); 
     sendBreakMin2Day1 = ""+theTimeMachineMin(restFrom2Day1,restTo2Day1); 
     hour2Day1 = Integer.parseInt(sendBreakHour2Day1); 
     minute2Day1 = Integer.parseInt(sendBreakMin2Day1); 
    } 
+0

Können Sie einen Teil Ihres Codes bereitstellen, um den Zeitunterschied zu bestimmen? – babadaba

+0

@babadaba Ich habe jetzt Code hinzugefügt. – mogren3000

Antwort

0

Ich glaube, dass Sie unter DST-Zone (Sommerzeit) sind, oder?

Auf diese Weise kann Ihr Gerät 23:00 (und nicht 22:00) markieren.

Vielleicht setzen Sie den Kalender auf 22:00 Uhr. Da DST jedoch aktiv ist, ist Ihre Zeit in der Tat 23:00 (22:00 + DST aktiviert Flag). Vielleicht bekommen Sie deshalb 15 und nicht 45 Minuten.

+0

Ok. Wie deaktiviere ich das? – mogren3000

+0

Teilen Sie mehr Code in Ihrer Frage .. nur um zu sehen, wie Sie die Zeit/Kalender usw. einstellen – W0rmH0le

+0

Überprüfen Sie Update mit Code – mogren3000

0

Gibt es andere Ergebnisse für Sie?

public long theTimeMachineHours(EditText a, EditText b) throws Exception{ 
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm", Locale.ENGLISH); 
    Date startDate = simpleDateFormat.parse(a.getText().toString()); 
    Date endDate = simpleDateFormat.parse(b.getText().toString()); 


    long different = endDate.getTime() - startDate.getTime(); 

    long minutesInMilli = 1000 * 60; 
    long hoursInMilli = minutesInMilli * 60; 

    long hours = different % (hoursInMilli * 24)/hoursInMilli; 
    long minutes = different % hoursInMilli/minutesInMilli; 

    return hours; 
} 
+0

Sie können die Stunden zu Int bei Bedarf – babadaba

+0

werfen Dies hat das Problem nicht gelöst. – mogren3000

+0

Was schreiben Sie in Ihren EditTexts? – babadaba