타임 스탬프가 정확한 시간인지 (즉, 분, 초 또는 밀리 초 구성 요소가없는 시간을 나타냄) - 프리미티브 만 사용하는지 확인해야합니다. 이 코드는 초당 수백 번 호출되며 Calendar
또는 다른 객체의 오버 헤드를 원하지 않습니다.타임 스탬프가 정확한 시간인지 확인
나는 이것을 시도했지만 반올림 오류로 인해 비교가 실패하게됩니다.
float hours = (time/3600000f);
boolean isExactHour = hours == (int)hours;
예를 들어, 시간 = 1373763600470 인 경우 시간 = 381601.03125 일 경우. 그 시간 스탬프는 오늘 오전 1시 : 00 : 000 GMT를 나타내며 시간은 381601이어야합니다.
빠르고 쉬운 방법에 대한 아이디어가 있으십니까? 감사!
[편집] 난 시간대 상관 없으며, 초 도약하지 않는다, 그것을하지 않을 때
는 :)? (이 첫눈보다 더 복잡한 것 같다 명확성을 위해
. 타임 스탬프는 오늘 자정 (즉, 2013 년 7 월 13 일 00 : 00 : 00 : 000)을 반환하는 메소드에 의해 생성됩니다. 그런 다음, 항상이 초기 타임 스탬프 플러스/마이너스 5 분의 정확한 배수 인 long 배열에서 모든 타임 스탬프에 대해 계산합니다. 주어진 우표가 "시간의 최고점"인지 판단하는 나의 목표. 나는 5 분의 배수가 연말과 겹치는 엣지 케이스를 가지고 있을지도 모르지만 나는 그것들과 함께 살 수있다.
* "빠르고 간단한 방법을 찾기위한 아이디어가 있습니까?"* 인터넷에서 낯선 사람들에게 '당신을 위해 할 것'을 물어보십시오. 오, 당신은 이미 그것을 다루었습니다. –
'1373763600470'은 01 : 00 : 00 : 000이 아니라 01 : 00 : 00 : 470을 나타 냅니까? – smsnheck
Erm, 왜 * exact *에 대해'float'을 사용하려고합니까? 나는 당신이 [모듈러스 연산]을 찾고 있다고 생각한다. (http://en.wikipedia.org/wiki/Modulo_operation) –