2016-12-22 1 views
0

이 같은 날짜 문자열을 가지고있다 - 나는 장치의 현재 시간대의 시간을 얻을 수 있도록 (또는 다른) 의지가 필요 DateFormatter 어떤 종류의 2016-12-20T15:26:21+11:00변환 날짜 시간은

.

+2

어떤 날짜 형식화 프로그램을 시도 했습니까? – Abizern

+0

yyyy-MM-dd hh : mm : ss a – pkc456

+2

날짜가 있습니다. 시간 만 원하는 줄 알았습니까? – Abizern

답변

1

입력은 ISO8601 만 시간으로 날짜 문자열을 변환하는 다음과 같은 코드를 사용할 수 있습니다, 적절한 솔루션은 DateFormatter입니다. localetimeZone에 대한 특정 설정이 없으면 포맷터는 현재 로켈 및 시간대를 고려합니다.

let dateString = "2016-12-20T15:26:21+11:00" 
let formatter = DateFormatter() 
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ" 
formatter.locale = Locale(identifier: "en_US_POSIX") // set locale to reliable US_POSIX 
let date = formatter.date(from:dateString) 
formatter.timeStyle = .medium 
formatter.dateStyle = .none 
print(formatter.string(from: date!)) 
0

당신은

 let sourceDateString = "2016-12-20T15:26:21+11:00" 
     let formatter = DateFormatter() 
     formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ" 
     formatter.locale = Locale(identifier: "en-US") 
     formatter.timeZone = TimeZone(identifier: "UTC") 
     let date = formatter.date(from: sourceDateString) 
     print("\(date)") 

     formatter.timeZone = NSTimeZone.local 
     formatter.dateFormat = "HH:mm:ss" 

     let strDate = formatter.string(from: date!) 
     print(strDate) 
0

다음은 현대적인 방법입니다. 놀이터에서 시험해 볼 수 있습니다 :

let dateString = "2016-12-20T15:26:21+11:00" 

// First use an ISO8601 Date formatter to turn the string into a date. 

let inputFormatter = ISO8601DateFormatter() 
let date = inputFormatter.date(from: dateString)! // Force unwrapping as this is a demo - you should be more careful. 

// Now use a normal DateFormatter set to your current locale, turn of the date display, and use a short Time display style: 

let outputFormatter = DateFormatter() 
outputFormatter.locale = Locale.current 
outputFormatter.dateStyle = .none 
outputFormatter.timeStyle = .short 

let display = outputFormatter.string(from: date) 

// As I'm in the UK and the simulator local is US, I get "4:26 AM" 
// Your result will be different. 
관련 문제