2015-01-28 4 views
4

내 앱의 사용자 기본값에서 특정 시간을 저장하고 검색하려고합니다. (반복되는 이벤트 날짜가 관련성이 없으므로 무시되므로)이 이상한 문제가 발생합니다. 정확하지만, 분, 초 여기 내 코드는 구성 요소가 제대로 같은NSCalendar.dateFromComponents가 잘못된 시간을 반환합니다.

Components: <NSDateComponents: 0x17414a7c0> 
Hour: 8 
Minute: 30 
Second: 0 

로, 시간을 출력

var calendar = NSCalendar(calendarIdentifier: NSGregorianCalendar) 
var flags: NSCalendarUnit = .MinuteCalendarUnit | .HourCalendarUnit | .SecondCalendarUnit 
var components = calendar?.components(flags, fromDate: NSUserDefaults.standardUserDefaults().valueForKey("breakfastTime") as NSDate!) 
let test = calendar?.dateFromComponents(components!) as NSDate! 
NSLog("Components: %@", components!) 
NSLog("Date 1: %@", NSUserDefaults.standardUserDefaults().valueForKey("breakfastTime") as NSDate) 
NSLog("Date 3: %@", test!) 

되지 않고 날짜는 c dateFromComponents

Date 3: 0001-01-01 07:40:04 +0000 

를 사용하는 경우 orrectly

Date 1: 2015-01-28 07:30:00 +0000 
(It's 7 rather than 8 but it makes sense, since it's stored at UTC) 

그러나 사용자의 기본 설정에서 검색, 이것은 40 및 04

+0

와우, 나는 그 (단지 시간을 이동 시간대 나의 이해이었다) 그와 아무 얼마나 아무 생각하지만 작동합니다. 감사! –

답변

6

어디에서 온 심지어 당신하여 문제를 해결할 수 이해하지 못하는 일이 시간대를 올바르게 설정하십시오. 예를 들어 :

calendar?.timeZone = NSTimeZone(abbreviation: "GMT")! 
관련 문제