2013-10-07 4 views
0

원격 소스에서 많은 참조 날짜를 가져오고 있습니다. 날짜는 일년 중 임의의 요일 (이 경우 01/01/2000)의 시간을 나타냅니다. 유닉스 타임 스탬프로 제공된다. 예를 들어 946717200은 오전 9시를 나타냅니다. 또한 각 위치의 시간대가 표시됩니다.시스템 표준 시간대와 관계없이 동일한 시간대에 NSDates 서식 지정

다음 코드를 사용하여이 시간을 UTC에서 올바른 오프셋을 사용하여 실제 날짜로 변환합니다.

946,717,200의 주어진 입력, 현재 날짜, 미국/로스 엔젤레스 시간대로 예를 들어
-(NSDate *)dateWithInterval:(NSTimeInterval)interval referenceDate:(NSDate *)aRealDate timezone:(NSTimeZone *)aTimeZone 
{ 
    NSDate *time = [NSDate dateWithTimeIntervalSince1970:interval]; 
    NSDateComponents *components = [[NSDateComponents alloc] init]; 

    //Set the timezone 
    [components setTimeZone:aTimeZone]; 

    //I'm using Erica Sadun's NSDate+utilities category on NSDate to provide the shorthand methods 
    [components setDay:[aRealDate day]]; 
    [components setMonth:[aRealDate month]]; 
    [components setYear:[aRealDate year]]; 
    [components setHour:[time hour]]; 
    [components setMinute:[time minute]]; 
    [components setSecond:[time seconds]]; 

    return [[NSCalendar currentCalendar] dateFromComponents:components]; 
} 

, 나는 날짜 2013년 10월 7일 16시 0분 0초 0000하지만 때를 부여하고있어 00 : 나는 무엇을 00-0700

을하고 있지 않다 2013-10-07T01 으로 미국/로스 엔젤레스로 설정 시간대, 같은 시간대로 설정 시스템과 그이 (가) NSDateFormatter를 사용하는 형식은,이 나타납니다 바르게?

+0

귀하의 문제는 바로이 날짜에 나타나는 "T"입니까? –

+0

아니요, 실제 날짜가 잘못되었습니다. 형식이 문제가되지 않았습니다. – Jonathan

답변

0

문제는 NSDate-utilities 범주입니다. 그것은 날짜의 시간대 수정자를 완전히 무시하고 시간대를 고려하여 항상 만듭니다. 내 자신의 날짜 구성 요소 집합을 사용하고 시간대 속성을 설정하면 문제가 해결되었습니다.