이번 프로젝트에서는 데이터가 날짜에 대한 항목이 여러군데에서 많이 쓰여
기본 타입의 확장으로 편리성을 높여봤습니다.
날짜 형식을 잘 파싱해서 Datecomponents에 넣어서 Date값을 반환해도 좋지만
Dateformat을 활용해 바꿔봤습니다.
extension String {
func toDate() -> Date? { //"yyyy-MM-dd HH:mm:ss"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
dateFormatter.timeZone = TimeZone(identifier: "UTC")
if let date = dateFormatter.date(from: self) {
return date
} else {
return nil
}
}
}
extension Date {
func toString() -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
dateFormatter.timeZone = TimeZone(identifier: "UTC")
return dateFormatter.string(from: self)
}
}
따로 함수로 빼서 사용 하시려면 self 자리에 해당하는 내용을 적어주면 되겠네요 ㅎ
추가로 toString할때 타임존을 UTC 가 아니라 각 나라별로 하면
Date는 기본이 UTC라 각 나라의 시간대별 시간으로 바로 변환 하는걸로 써먹을수도 있을거같아요.
혹은 날짜형식 변환에도 써먹을수 있겠네요
년 월 일 시 분 초 있는 문자열을 월/일 시 - 분 문자열로 변환같은 기능으로요.
그럴일이 있을까 모르겠습니다만...
아무튼 위 소스의 사용은 아래와 같이 해봤습니다.
(참고로 이 애들은 전역 변수 쓰듯이 클래스 밖에다가 적어 주셔야합니다 extension 사용임을 잊지말아주세요.)
참고로 toDate()는 반환이 옵셔녈 타입이기에 한번 옵셔널을 벗겨주셔야합니다.
반응형
'iOS > swift' 카테고리의 다른 글
SQLite3, Auto increment 설정시... (0) | 2020.02.03 |
---|---|
xcode의 시뮬레이터에서 애니메이션이 매우 느리게 보여진다... (0) | 2020.01.29 |
_UITextLayoutView 라는클래스가 없다! (0) | 2019.11.05 |
ios13으로 업데이트되고 나의 앱의 화면상단에 이상한게 보인다... (0) | 2019.09.23 |
CNCopyCurrentNetworkInfo() 값이 항상 Error로 빠진다. (0) | 2019.07.29 |