์ง๊ธ ํ๊ณ ์๋ ์ฌ์ด๋ ํ๋ก์ ํธ์์ ์๊ฐ ์ ๋ณด๋ฅผ ๋ฐ์์ฌ ๋ ISO8601 ํํ๋ก ๋ฐ์์ค๋๋ฐ, ์ด๋ฅผ ํ์ฌ ๋ ์ง, ์๊ฐ๊ณผ ๋น๊ตํ์ฌ ์๋์๊ฐ์ผ๋ก ํ๊ธฐํด์ผ ํ๋ค.
๋ณด์ฌ์ฃผ๋ ํํ๋ ์๋ ํํ๋๋ก ๋ณด์ฌ์ฃผ๊ณ ์ ํ๋ค.
์ง๊ธ, 5๋ถ ์ , 3์๊ฐ ์ , 2์ผ ์
Foundation ํ๋ ์์ํฌ์์ RelativeDateTimeFormatter ๋ฅผ ์ด์ฉํ์ฌ ์๋์๊ฐ์ผ๋ก ๋ฐ๊ฟ์ค ์ ์์ด์ ์ด๋ฅผ ์ด์ฉํด ๋ฉ์๋๋ฅผ ์ ์ธํ์๋ค.
์๋ฒ์์ ๋ฌธ์์ด๋ก ๋ฐ์์ค๊ธฐ ๋๋ฌธ์ ๋ฌธ์์ด์ Date ํฌ๋งท์ผ๋ก ๋ณํํ๋ ๋ฉ์๋๋ฅผ String ์ extension ์ผ๋ก ์ ์ธํด์ฃผ๊ณ , ์ด๋ ๊ฒ ๋ฐ๊พผ ๋ ์ง๋ฅผ Date extension ์์ ์๋์๊ฐ์ผ๋ก ๋ฐ๊พธ๋ ๋ฉ์๋๋ฅผ ์ ์ํ์๋ค.
๋ ์ง ๋ฌธ์์ด์ Date ํํ๋ก ๋ณํํ๊ธฐ
// ๋ฌธ์์ด -> ๋ ์ง
extension String {
func toDate() -> Date {
let dateFormater = DateFormatter()
dateFormater.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
guard let validDate = dateFormater.date(from: self) else { return Date() }
return validDate
}
}
ํ์ฌ ๋ ์ง ๊ธฐ์ค์ผ๋ก ์๋์๊ฐ ๋ฌธ์์ด ๋ง๋ค๊ธฐ
// ์๋์๊ฐ ๊ณ์ฐํ๊ธฐ
extension Date {
/// ์ค๋ ๋ ์ง๋ฅผ ๊ธฐ์ค์ผ๋ก ์๋์๊ฐ์ ๊ณ์ฐํ์ฌ ๋ฌธ์์ด๋ก ๋ฐํํ๋ค.
/// - ์: 12์๊ฐ ์ , 10๋ถ ์
func toRelativeString() -> String {
let formatter = RelativeDateTimeFormatter()
formatter.locale = Locale(identifier: "ko_KR")
formatter.dateTimeStyle = .named
formatter.unitsStyle = .short
let dateToString = formatter.localizedString(for: self, relativeTo: .now)
return dateToString
}
}
์ฌ์ฉ๋ฐฉ๋ฒ
let writtenDate = "2023-03-05T15:08:43"
let relativeTimeFromNow = writtenDate.toString().toRelativeString()
์ฐธ๊ณ ๋งํฌ
RelativeDateTimeFormatter | Apple Developer Documentation
Relative Date Time Formatter / List Formatter ์ฌ์ฉํด๋ณด๊ธฐ
์ค๋๋ ์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
๊ถ๊ธํ๊ฑฐ๋ ๋๋๊ณ ์ถ์ ์๊ธฐ๊ฐ ์์ผ์๋ฉด ๋๊ธ๋ก ์๋ ค์ฃผ์ธ์!
์ฌ๋ฐ๊ฒ ์ฝ์ผ์ จ๋ค๋ฉด ๊ณต๊ฐ๊ณผ ๊ตฌ๋ ์ ํฐ ํ์ด ๋ฉ๋๋ค.
ํญ์ ๊ฐ์ฌํฉ๋๋ค.
์ด ๊ธ์ doy.oopy.io ์๋ ๋ฐํ๋์ด ์์ต๋๋ค.
๋๊ธ