2013-07-15 1 views
10

NSDate 변수가 있는데 시간 만 변경하려고합니다 (날짜는 변경하면 안됨). 가능한가?어떻게 NSDate 변수에서 시간 만 설정할 수 있습니까?

예 : DatePicker에서 날짜에 사용자 선택 날짜 간격 (가 시작 날짜 만약 내가 23시 59분 59초으로 시간을 설정, 그것은 종료 날짜 인 경우 00:00:00으로 시간을 설정하려는)

도와 주셔서 감사합니다.

안부, Alex.

+1

수 없습니다. NSDate 객체는 기본적으로 참조 날짜 이후의 밀리 초 수인 단일 값을 포함합니다. 그러나 NSCalendar와 NSDateComponents를 사용하여 개별 구성 요소를 개별 *처럼 조작 할 수 있습니다. –

답변

30

NSDateComponents을 사용하고 싶습니다.

NSDate *oldDate = datePicker.date; // Or however you get it. 
unsigned unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay; 
NSCalendar *calendar = [NSCalendar currentCalendar]; 
NSDateComponents *comps = [calendar components:unitFlags fromDate:oldDate]; 
comps.hour = 23; 
comps.minute = 59; 
comps.second = 59; 
NSDate *newDate = [calendar dateFromComponents:comps]; 
+0

물론 시간대를 조심해야합니다. –

+0

어떻게 TimeZone을 설정할 수 있습니까? – LIAL

+0

나는 이것이 해결책이라고 생각하지만, 시간은 설정되지 않았다. 분과 초만 59:59로 설정되었다. 정말 표준 시간대를 설정해야합니다. NSDate에서 시간대를 가져올 수 있습니까? (예 : oldDate 변수에서 – LIAL

4

NSDate 개체는 변경할 수 없습니다.

NSDate 개체를 새로 만들 수 있습니다. - (id)dateByAddingTimeInterval:(NSTimeInterval)seconds 메소드를 살펴보십시오.

NSDate *newDate = [endDate dateByAddingTimeInterval:24.0f * 60.0f * 60.0f - 1.0f]; 
0

시간을 추적하기 만하면 NSDate 또는 NSTimeInterval을 사용하지 않습니다. 대신 NSinteger를 사용하고 "군대"시간, 즉 08:30 = 8:30 AM, 14:15 = 2:15 PM을 저장합니다.

관련 문제