반응형
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시간제) vsh(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 |
로케일 의존 |
반응형
'Dev Study > iOS' 카테고리의 다른 글
| ViewController 비만화 방지 — 비즈니스 로직 분리 (0) | 2025.11.14 |
|---|---|
| WKWebView 쿠키(Cookie) 가이드 (0) | 2025.11.10 |
| 화면을 이미지로 전환 (UIView -> UIImage, View -> Image) (0) | 2025.11.06 |
| WKWebView 실전 팁 모음 (iOS 15+) (0) | 2025.11.06 |
| iOS 위젯에서 앱 특정 화면으로 이동하는 방법 (0) | 2025.11.06 |
| iOS 앱 크래시 발생 시 확인하는 방법 (0) | 2025.11.06 |
| iOS DocC 완전 정복 가이드: Swift 문서화를 위한 최고의 도구 (0) | 2025.11.06 |
| iOS TDD 완벽 가이드: 개념부터 실전까지 (0) | 2025.11.06 |

