Я пытаюсь создать простой будильник, но наткнулся на проблему, которую я не могу исправить. Я пытаюсь разобрать строку на дату, поэтому я могу получить разницу между текущим временем и временем, чтобы отключить будильник.date.getTime() короче System.getCurrentTimeMillis()
Вот мой код, чтобы разобрать время:
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
sdf.setTimeZone(getTimezone());
Date date = sdf.parse(args[0]);
Вот мой getTimezone() метод:
public static TimeZone getTimezone() {
Calendar cal = Calendar.getInstance();
long milliDiff = cal.get(Calendar.ZONE_OFFSET);
String [] ids = TimeZone.getAvailableIDs();
String name = null;
for (String id : ids) {
TimeZone tz = TimeZone.getTimeZone(id);
if (tz.getRawOffset() == milliDiff) {
// Found a match.
name = id;
break;
}
}
return TimeZone.getTimeZone(name);
}
И вот мой код выяснить разницу:
long diff = date.getTime() - System.currentTimeMillis();
Поэтому моя проблема заключается в том, что date.getTime() возвращает 79680000, а System.currentTimeMillis() возвращает 1473538047978 (This i с разным разным, но по какой-то нечетной причине date.getTime() не является).
Это означает, что я получаю отрицательное число при попытке выяснить разницу, и поэтому я не могу ее использовать.
EDIT: После небольшой отладки я понял, что это связано с тем, что год, месяц и день не установлены, однако я не знаю, как их получить.
У меня нет проблем, большее число означает, что оно «более новое». Вы должны сделать проверку «<0» с результатом, а в случае отрицательного умножить ее на -1, чтобы повернуть ее. Однако, пожалуйста, объясните, что у вас проблемы более подробно. – Luftbaum
@Luftbaum Какие детали вам нужны? Могу сказать, что время ввода 22:20:00 –
С текущего дня? На самом деле, не могли бы вы сказать, чего вы хотите достичь в целом? – Luftbaum