반응형

1. 자주 쓰는 포맷 기호 요약

범주 포맷 의미 예시
연도 yyyy 4자리 연도 2025
연도(2자리) yy 2자리 연도 25
MM / M 2자리 / 1자리 월 04 / 4
dd / d 2자리 / 1자리 일 09 / 9
시(24h) HH / H 00~23시 13
시(12h) hh / h 01~12시 01
mm / m 07 / 7
ss / s 05 / 5
오전/오후 a AM/PM AM / PM
요일 E, EEE, EEEE 요일(짧은/긴) 목 / 목요일 / Thursday
월 이름 MMM, MMMM 월 이름(짧은/긴) Jan / January (ko-KR: 1월)
분기 Q, QQQ, QQQQ 분기 1 / Q1 / 1st quarter

참고: G(시대), w(주), D(1년 중 날짜), g(줄리안 데이) 등 고급 심볼도 있습니다.
로케일(locale)에 따라 한글 표기가 달라질 수 있습니다.

 

2. 포맷 조합 예시 (CheatSheet)

포맷 출력 예시
dd.MM.yy 16.01.23
MM/dd/yyyy 01/16/2023
MM-dd-yyyy HH:mm 01-16-2023 00:10
MMM d, h:mm a Jan 16, 0:10 AM
EEEE, MMM d, yyyy Monday, Jan 16, 2023
yyyy-MM-dd'T'HH:mm:ssZ 2023-01-16T00:10:00-0600

 

3. 문자열 ↔ 날짜 변환

문자열 → Date

let f = DateFormatter()
f.dateFormat = "yyyy-MM-dd"
let date = f.date(from: "2025-11-06")
print(date) // Optional(2025-11-06 00:00:00 +0000)

Date → 문자열

let f = DateFormatter()
f.dateFormat = "EEEE, MMM d, yyyy"
let s = f.string(from: Date())
print(s) // Thursday, Nov 6, 2025

 

4. dateStyle / timeStyle 사용

let f = DateFormatter()
f.dateStyle = .medium   // .none, .short, .medium, .long, .full
f.timeStyle = .short
let s = f.string(from: Date())
// "Nov 6, 2025 at 10:05 AM"

 

5. 로케일(Locale) & 캘린더 설정

let f = DateFormatter()
f.dateFormat = "MMMM d, yyyy"
f.locale = Locale(identifier: "fr_FR")  // 프랑스어
f.calendar = Calendar(identifier: .islamic)
let str = f.string(from: Date())

 

6. ISO 8601 포맷 (서버 통신용)

let f = DateFormatter()
f.locale = Locale(identifier: "en_US_POSIX")
f.timeZone = TimeZone(secondsFromGMT: 0)
f.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
let s = f.string(from: Date())  // 2025-11-06T01:10:00+0000

서버 간 통신 시에는 en_US_POSIX + UTC(GMT) 고정을 사용하는 것이 안전합니다.

 

iOS 10+ ISO 전용 Formatter

let iso = ISO8601DateFormatter()
iso.timeZone = TimeZone(secondsFromGMT: 0)
iso.formatOptions = [.withInternetDateTime, .withFractionalSeconds]
let s = iso.string(from: Date())

 

7. 한국식 포맷 예시

let f = DateFormatter()
f.locale = Locale(identifier: "ko_KR")
f.dateFormat = "yyyy년 M월 d일 (E) a h:mm"
let s = f.string(from: Date())
// 2025년 11월 6일 (목) 오전 10:12

 

8. 주의할 점

  • 대소문자 구분 주의
    M은 월(month), m은 분(minute)입니다.
    H(24시간제) vs h(12시간제) 혼동하지 않도록 주의하세요.
  • 로케일 영향
    MMM, EEEE 같은 문자열은 로케일에 따라 다르게 표시됩니다.
  • ISO 표준 권장
    서버 교환 시에는 항상 en_US_POSIX + UTC + ISO 포맷을 사용하세요.

 

9. 빠른 참고표

목적 포맷 비고
짧은 날짜 MM/dd/yyyy 미국식
국제 표준 yyyy-MM-dd ISO 날짜
타임스탬프 yyyy-MM-dd'T'HH:mm:ssZ 시간대 포함
한국식 긴 형식 yyyy년 M월 d일 EEEE a h:mm ko_KR
요일·월 이름 MMMM, EEEE 로케일 의존
반응형
Posted by 까칠코더
,