Bei meinem Simple Shutdown habe ich gerade das Problem gehabt, wie ich die Differenz zwischen zB. Samstag 17:30 Uhr und Sonntag 05:30 Uhr bekomme.

In diesem Fall, funktioniert es nicht, einfach die größere Zeit, von der kleineren zu subtrahieren.

Lösung:

1
2
3
4
5
6
7
Date date3 = null;
try {
date3 = format.parse("25:00");
} catch (ParseException e) {
e.printStackTrace();
}
long difference = date3.getTime() - (date1.getTime()) + date2.getTime();

Wichtig sind hierbei Zeile 3 und Zeile 7.

Komplette Methode:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
private void shutdownByTime(String time) {
 
		String time1 = timeNow("HH:mm");
 
		SimpleDateFormat format = new SimpleDateFormat("HH:mm");
 
		Date date1 = null;
		Date date2 = null;
		try {
			date1 = format.parse(time1);
			date2 = format.parse(time);
		} catch (ParseException e) {
			e.printStackTrace();
		}
 
		if (date2.getTime() > date1.getTime()) {
			long difference = date2.getTime() - date1.getTime(); // in Millisekunden
			eingabe("PC wird in " + String.valueOf(difference / 60000)
					+ " Minuten heruntergefahren");
 
		} else if (date2.getTime() < date1.getTime()) { //Uhrzeit ist am nächsten Tag
			Date date3 = null;
			try {
				date3 = format.parse("25:00");
			} catch (ParseException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			long difference = date3.getTime() - (date1.getTime())
					+ date2.getTime();
		}
 
fireShutdown(Integer.parseInt(String.valueOf(difference / 1000)));
 
	}