2016-08-20 1 views
2
let timestamp = (NSDate().timeIntervalSince1970) 
let date = NSDate(timeIntervalSinceReferenceDate: (timestamp)) 

print(NSDate()) // 2016-08-20 18:24:17 +0000 
print(timestamp) // 1471717652.15506 
print(date)  // 2047-08-21 18:24:17 +0000 

어떻게 타임 스탬프를 일관되게 만들 수 있습니까?날짜를 타임 스탬프로 변환하려고하지만 다시 날짜로 변환하면 날짜가 일치하지 않습니다.

+1

당신이 정말 일치하지 않습니다 게시 된 코드를 보여 출력. 이 두 신기원은 31 년마다 다르므로 1 부 및 3 부 인쇄 진술에는 하루가 아닌 31 년이되는 날짜가 표시되어야합니다. – rmaddy

+1

@rmaddy : 2016-08-20 및 2047-08-21은 31 년마다 다릅니다. –

+1

@MartinR Ugh. 독해 실패를 읽습니다. – rmaddy

답변

5

귀하의 질문에 완전히 명확하지는 않지만 첫 번째 및 세 번째 print 문이 같아야합니다. 사실이라고 가정하면 동일한 에포크를 사용하기 위해 첫 번째 또는 두 번째 코드 줄을 수정해야합니다.

첫 번째 라인은 "1970"신기원을 사용합니다. 두 번째 라인은 Cocoa의 "reference date"신기원을 사용합니다. 그들은 동일하지 않습니다. 두 줄 중 하나를 다른 줄과 일치하도록 변경하십시오.

당신이 원하는 중 하나

let timestamp = (NSDate().timeIntervalSinceReferenceDate) 
let date = NSDate(timeIntervalSinceReferenceDate:timestamp) 

나 :

let timestamp = (NSDate().timeIntervalSince1970) 
let date = NSDate(timeIntervalSince1970:timestamp)