간단한 알람 시계를 만들려고하는데 수정하지 못하는 문제가 발생했습니다. 내가 현재 시간과 알람을 설정하는 시간 사이의 차이를 얻을 수 있도록 날짜 문자열을 구문 분석하려고 해요.date.getTime()이 System.getCurrentTimeMillis()보다 짧습니다.
여기 시간 구문 분석을 내 코드입니다 :
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
sdf.setTimeZone(getTimezone());
Date date = sdf.parse(args[0]);
가 여기 내 된 getTimezone의을() 메소드 :
long diff = date.getTime() - System.currentTimeMillis();
:
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);
}
그리고 여기에 그 차이를 알아내는 내 코드입니다 그래서 내 문제는 System.currentTimeMillis()가 1473538047978을 반환하는 동안 date.getTime()이 79680000을 반환한다는 것입니다. This i 물론 매회마다 다르지만, 이상한 이유로 date.getTime()은 그렇지 않습니다.
즉, 차이를 알아 내려고 할 때 음수가 나오므로 사용할 수 없습니다.
EDIT : 약간의 디버깅 후, 나는 연, 월, 일이 설정되지 않은 것과 관련이 있다는 것을 깨달았지만, 어떻게해야할지 모르겠다.
문제가 발생하지 않는다면 높은 숫자는 "새로운"것을 의미합니다. 결과와 함께 "<0"확인을 수행해야하며, 음수 인 경우에는 -1로 곱하면됩니다. 그러나보다 자세한 방법으로 문제를 설명하십시오. – Luftbaum
@Luftbaum 어떤 세부 사항이 필요합니까? 입력 시간은 22:20:00라고 말할 수 있습니다. –
오늘의? 사실, 당신이 말할 수 있겠습니까? 당신이 일반적으로 원하는 것은 무엇입니까? – Luftbaum