2017-12-06 1 views
0

문자열의 10/24 12:00 PM과 같은 형식을 날짜 형식의 동등한 형식으로 변환 중입니다. 다음 코드를 사용하고 있습니다 :변환 할 때 문자열이 잘못됨 3.0

let dateFormatter = DateFormatter() 
    dateFormatter.dateFormat = "MM/dd hh:mm aa" 

    self.dateCompleted = dateFormatter.date(from: self.DeliverBy!) 

dateCompleted는 date 변수이고 self.DeliveryBy는 String 변수입니다.

2000-10-24 17:00:00 UTC와 같은 결과가 나오는데, 2017-10-24 12:00:00 UTC와 같은 형식이어야합니다. 내가 뭐 잘못하고 있니?

나는 http://userguide.icu-project.org/formatparse/datetime

+1

는'DateFormatter'은 현지 시간으로 가정합니다. 그래서 17:00:00 UTC를 보는 것은 당신이 EST (UTC -5)에 살고 있다고 가정 할 때 완벽한 의미를 갖습니다. – rmaddy

답변

2

당신의 날짜 문자열은 년 따라서 기본 날짜 결정됩니다를 지정하지 않는 언급했다.

let dateFormatter = DateFormatter() 
dateFormatter.dateFormat = "MM/dd hh:mm aa" 
dateFormatter.defaultDate = Calendar.current.startOfDay(for: Date()) 
if let dateCompleted = dateFormatter.date(from: "10/24 12:00 PM") { 
    print(dateCompleted) // 2017-10-24 10:00:00 +0000 
} 

(나는 그러므로 오후 12시가 (10)로 인쇄, 유럽/베를린 시간대에서 오전 : 당신이 할 수있는 일은 현재 하루 (의 시작)에 기본 날짜를 설정하는 것입니다 : 그리니치 표준시 00시) 당신은 DateFormatter에 현재 날짜 정보를로드 할 수 있습니다

+0

2017-10-24 17:00:00 +0000 여전히 잘못된 타임 스탬프가 있습니다. – Ackman

+0

@Ackman : 날짜에는 시간대가없고 GMT로 항상 인쇄됩니다. 귀하의 시간대에서 "12:00 PM"은 GMT 표준 시간대의 17:00이므로, 결과는 정확합니다. https://stackoverflow.com/questions/39937019/nsdate-or-date-shows-the-wrong-time을 참조하십시오. –

0

:. 끝내라

let dateFormatter = DateFormatter() 

dateFormatter.dateFormat = "MM/dd hh:mm aa" 

dateFormatter.defaultDate = Date() // start with the current date 

self.dateCompleted = dateFormatter.date(from: self.DeliverBy!) 
+0

10/24 12:00 PM -----> Deliveryby 2017-10-24 17:00:56 +0000 -----> dateCompleted 왜 시차가 있습니까? – Ackman

관련 문제