2014-10-10 2 views
1

날짜 문자열을 NSDate로 변환하려고합니다. 나는이 입력 날짜 문자열 2014-10-09 17:57과이 시간대 +4 또는 Asia/Dubai을 가지고 있는데, 어떤 이유에서이 코드를 2014-10-09 13:57:00 +0000에서 실행 한 후에이 NSDate를 얻습니다.Swift가 예상대로 작동하지 않는 문자열에서 NSDate를 만듭니다.

let dateString = "2014-10-09 17:57" 
let formatter = NSDateFormatter() 
formatter.dateFormat = "yyyy-MM-dd HH:mm" 
formatter.timeZone = NSTimeZone(name: "Asia/Dubai") 
println("\(formatter.dateFromString(dateString))") 

나는 2014-10-09 17:57 +0400과 같은 날짜를 갖고 싶습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 내가 알아 내도록 도와 줄 수 있니? 이 날짜와 시간대로 올바르게 포맷 된 다른 날짜 사이에 계산을 할 날짜가 필요합니다.

답변

2

복합 구문을 해체하는 데 도움이됩니다. 포맷터의 결과는 날짜 (GMT) 이후의 날짜이며, 형식이나 시간대에 대한 개념이 없습니다.

println()은 설명 방법의 기본 서식을 기준으로 날짜를 표시합니다.

특정 방식으로 표시하려면 원하는 날짜 표시기를 사용하여 원하는 문자열 표현을 만드십시오.

예 : 통신에 대한

let dateString = "2014-10-09 17:57" 
let formatter = NSDateFormatter() 
formatter.dateFormat = "yyyy-MM-dd HH:mm" 
formatter.timeZone = NSTimeZone(name: "Asia/Dubai") 
let date = formatter.dateFromString(dateString) 
println("date: \(date!)") // date: 2014-10-09 13:57:00 +0000 

formatter.dateFormat = "yyyy-MM-dd HH:mm Z" 
let formattedDateString = formatter.stringFromDate(date!) 
println("formattedDateString: \(formattedDateString)") // formattedDateString: 2014-10-09 17:57 +0400 
+0

감사합니다. 나는 그것을 표시하고 싶지 않다. 'println'은 단지 디버그 목적을위한 것입니다. 이 날짜와 다른 날짜로 계산해야합니다. 두 번째 것은 올바르게 포맷되어 있습니다 (시간대 및 모든 항목 포함). –

+0

날짜는 2001 년 1 월 1 일 GMT의 첫 번째 순간부터의 초 수입니다. 시간대가 없으며 형식과 비교가 시간대에 상관없이 작동합니다. 설명 방법은 당신을 혼란스럽게합니다. Apple이 시간을 표시하기로 결정한 방식이며, 실제 시간과 관련이 없습니다. – zaph

+0

실제로 두바이의 현재 시간이 문자열의 값보다 큰지 확인하고 싶습니다. '2014-10-09 17 : 57' –

관련 문제