2016-10-24 5 views
-6

NSUserDefaults에 저장된 값을 인쇄하면 다음과 같은 결과가 나타납니다.NSUserDefault에 날짜를 저장하면 값이 잘못됨

let prefs = NSUserDefaults.standardUserDefaults() 
    prefs.setObject(NSDate(), forKey: "ST") 

    print ("Hey \(prefs.objectForKey("ST")) ") 

옵션 (2016년 10월 24일 8시 29분 20초 0000)

가 표시되는 텍스트 Optional(가 그리고 내가 원하는 것은 단지 Date time 표시하는 것입니다 안녕하세요.

또한 주어진 시간이 잘못되었습니다. 어떻게 해결할 수 있을까요? 키우면 때문에 선택 사항입니다

+0

시간이 틀린 이유가 UTC 시간 인 것 같습니다. –

+0

@Jecky 어떻게 해결할 수 있습니까? 그리고 Date-Time을 감싸는'Optional' 텍스트를 제거하려면 어떻게해야합니까? – Illep

+1

옵션 처리는 Swift의 * 기본 *입니다. 여기에 설명되어 있습니다 : https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html#//apple_ref/doc/uid/TP40014097-CH5-ID330 – Moritz

답변

0

, 이렇게 :

if prefs.object(forKey: "ST") != nil{ 
    print ("Hey \(prefs.objectForKey("ST")!) ") 
} 

시간에 대해서는 때문에 TimeZone의 오기 '. 시간대의 시간을 얻으려면이 시도 : DateFormatter = DateFormatter() formatter.dateFormat = "yyyy.MM :

let localDateTime = NSDate().description(with: NSLocale.current) 
+0

이''또한 주어진 시간이 잘못되었습니다' –

+0

'let localDateTime = ...'행에 대해이 오류가 발생합니다. 함수가 아닌 유형 'String'을 호출 할 수 없습니다 – Illep

+0

이상한데, 그 선이 효과가있다. 그것을 방해하지 않는지 확인하고 프로젝트를 청소하십시오. –

0

아마 당신은 포맷 문자열

하자 포맷터로 날짜를 저장할 수 있습니다 .dd HH : MM : SS는 ZZZ "

// Save Date... 
let hoy: Date = Date() 

let formato_hoy = formatter.string(from: hoy) 
print(formato_hoy) 


// Recover Date... 
let future_format: String = "2016.10.24 09:54:22 +0200" 

if let future = formatter.date(from: future_format) 
{ 
    print(future) 
} 

는 마스크에 ZZZ 값 시간대에 관한 것이다.

관련 문제