Swift에서 DateFormatter를 사용하여 사용자 로케일의 날짜 형식 지정
예를 들어, 미국에서는 "October 15"라고 쓰고 네덜란드에서는 15 oktober라고 씁니다.
날짜와 월의 순서가 다르고 월의 철자가 다르며 대문자도 다릅니다.
iOS의 DateFormatter가 이 많은 작업을 처리합니다. 예를 들어
nl
를 로케일로 사용하는 장치에서 다음 코드를 사용하는 경우 이 스니펫에 주석으로 추가한 출력이 표시됩니다.let now = Date()
let formatter = DateFormatter()
formatter.dateFormat = "dd MMMM"
formatter.string(from: now) // 15 oktober
이 코드의 출력은 제자리에 있습니다. 정확히 우리가 필요로 하는 것이며 지정된 날짜 형식과 완벽하게 일치합니다.
en_us
를 로케일로 사용하는 장치에서 동일한 코드를 실행하면 출력은 10월 15일입니다.날짜 포맷터가 철자와 대소문자를 올바르게 지정했지만 날짜와 월의 순서가 잘못되었습니다.
날짜 포맷터에서
setLocalizedDateFormatFromTemplate
를 직접 할당하는 대신 dateFormat
를 사용하여 이 문제를 해결할 수 있습니다. nl
를 로캘로 사용하여 장치에서 실행되는 예를 다시 살펴보겠습니다.let now = Date()
let formatter = DateFormatter()
formatter.setLocalizedDateFormatFromTemplate("dd MMMM")
formatter.string(from: now) // 15 oktober
여전히 작동합니다. 완벽합니다.
en_us
장치에서 이 코드를 실행하면 출력은 10월 15일입니다. 정확히 우리가 필요로 하는 것입니다.Playground에서
setLocalizedDateFormatFromTemplate
를 가지고 놀고 싶다면 다른 로케일에서 날짜 포맷터를 사용하는 다음 코드로 시도해 볼 수 있습니다.import Foundation
let now = Date()
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "en_us")
formatter.setLocalizedDateFormatFromTemplate("dd MMMM")
formatter.string(from: now) // October 15
formatter.locale = Locale(identifier: "nl")
formatter.setLocalizedDateFormatFromTemplate("dd MMMM")
formatter.string(from: now) // 15 oktober
이 빠른 팁에 대해 질문이 있거나 다른 이유로 저에게 연락하려는 경우 주저하지 말고 에서 메시지를 보내주십시오.
Swift와 Foundation이 이러한 종류의 작업을 처리할 수 있다는 것은 좋은 일입니다.
Reference
이 문제에 관하여(Swift에서 DateFormatter를 사용하여 사용자 로케일의 날짜 형식 지정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/donnywals/formatting-dates-in-the-user-s-locale-using-dateformatter-in-swift-5ee6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)