2012-07-31 4 views
3

우선, Calendar을 사용할 수 있지만이 문제를 이해하고 해결하는 방법을 배우고 싶습니다.Date에시, 분, 초를 0으로 설정하면 하루가 하나씩 감소합니다.

나는 Date에 현재 날짜가 있습니다. 나는이 코드와 함께 할 0으로 시간, 분, 초를 설정하려면 :

 current_date.setHours(0); 
     current_date.setMinutes(0); 
     current_date.setSeconds(0); 

뭔가 내가 그렇게하면 오늘 (31)의 경우, 하루가, 예를 들어, 1 감소됩니다 때문에 잘못된 것 일은 30으로 설정됩니다.

왜? 어떻게하면 Date으로 해결할 수 있습니까 (Calendar을 사용하지 않고,이 문제를 어려운 방법으로 해결하는 방법을 배우고 싶습니다). 감사합니다

+0

@ 루크 테일러 왜 안되나요? "why"라는 단어가 포함 된 잠재적으로 유효한 질문 제목이 많습니다. –

+0

당신의 질문 제목은 지금 합법적입니다, 그 전에 모든 kangfu했다. : P –

+1

이 코드는 요일을 변경하지 않습니다. http://ideone.com/uE7Yx? – Patrick

답변

2

이후 사용되지 않습니다

나는 그것이 시간대과 관련이있다 생각한다.

HMS를 0으로 설정하면 시간대에 따라 설정되지 않지만 UTC에 따라 설정됩니다 (100 % 확신 할 수는 없지만 ...).

0:0:0 YOUR LOCAL 

하지만

0:0:0 GMT 

당신이 미국에있는 경우 그 전에 날 : 그래서 결과 날짜가 없습니다.

분을 -yourDate.getTimezoneOffset()으로 설정하십시오 (작동하지 않으면 양수 값으로 시도하십시오).

2

이 방법의 구현을보세요. 그들은 그레고리력을 사용합니다. 그 상호 작용으로 인해 오류가 발생할 수 있습니다.

참고 : 설정 방법은 모든 ... JDK 그냥 추측 1.1 see

+1

그것이 사실이라면 절대적으로 의미가없는 규칙입니다. –

+0

시간, 분 및 초를 0으로 설정하십시오. 긴 숫자 (0:00:00 -> 23:59:59)를 줄이는 것이 더 작은 요일인지 확인하십시오. – RaphMclee

+1

질문에 개인적으로 설명 된 상황을 복제 할 수 없습니다. Date 객체를 초기화하면'setHours (0)','setMinutes (0)'및'setSeconds (0)'를 호출하여 초기화 된 시간을 알 수 있습니다. 오늘 자정 인 Date 객체를 제공 한 다음, 긴 가치 (두 번째 이전)는 어제 23:59:59 날짜를 알려줍니다. –

관련 문제