2017-09-08 2 views
0

저는 iOS에 익숙하지 않아 내 날짜에 몇 밀리 초 (5)를 추가하려고합니다. 나는 아래의 코드를 사용했지만 난 내가 분다른 날짜를 표시하는 DateFormatter

2017년 8월 9일 10:28 약간의 지연을 갖는 출력을 얻고있다

let str_TimeStamp = "2017-08-09 10:26:30.8" 
let formatter = DateFormatter() 
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss.S" 
formatter.timeZone = NSTimeZone(abbreviation: "UTC")! as TimeZone 

var dateInput: Date? = formatter.date(from: str_TimeStamp) 
dateInput = dateInput?.addingTimeInterval(TimeInterval(5*100)) 
let endtime = formatter.string(from: dateInput!) 
print(endtime) 

을 사용하고있는 정확한 날짜를 받고 있지 않다 : 10.8

+0

관련없는,하지만 당신의 사용을 제거한다 'NSTimeZone'. 'TimeZone' 인스턴스를 직접 인스턴스화하면됩니다 ... – Rob

답변

3

addingTimeInterval의 파라미터 초에 추가 할 수있는 값이다.

따라서 addingTimeInterval(TimeInterval(5*100)) - 500 초 = 8 분을 더합니다.

당신은 몇 밀리 초를 추가 할 경우 말 (5),이 시간 간격을 추가해야합니다 : 0.005

그래서 최종 코드는 다음과 같습니다

let str_TimeStamp = "2017-08-09 10:26:30.8" 
let formatter = DateFormatter() 
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss.SSSS" 
formatter.timeZone = TimeZone(abbreviation: "UTC") 

var dateInput = formatter.date(from: str_TimeStamp) 
dateInput = dateInput?.addingTimeInterval(5/1000) 

if let dateInput = dateInput { 
    let endtime = formatter.string(from: dateInput) 
    print(endtime) // prints 2017-08-09 10:26:30.8050 
} 
+0

날짜 문자열에 시간대가 포함되어 있지 않으면 보통 현지 시간임을 의미합니다. 날짜가 로컬 시간이 아닌 것으로 확신하지 않는 한 날짜 문자열을 구문 분석 할 때 표준 시간대를 변경하지 마십시오. –

+0

@LeoDabus - 시간대가 없다면 현지 시간을 "보통"의미한다고 동의합니다. (나는 실제로 웹 서비스와 영구 저장소를 다룰 때 그 반대가 맞다고 주장한다.) 그러나 문자열에 특정 시간대 한정자가 없으면 어떤 시간대를 사용해야하는지 확인해야한다. – Rob

관련 문제