✔︎ 오늘의 정리
- 날짜 데이터를 Date로 파싱하기
- 특정 시간을 현재 시간과 비교하여 인스타그램처럼 나타내기
날짜 데이터를 Date로 파싱하기
서버에서 받아온 데이터의 경우에는 아무것도 설정하지 않았을 경우 Date의 형식인 "yyyy-MM-dd'T'HH:mm:ss"가 아니라 "2023-12-06T12:50:39.848Z" 이런 식으로 들어왔다.
밀리 초단위까지 들어오는 경우에는 Date로 어케 바꾸지? 를 찾아보다가...

이런 걸 발견했다.
서버에서 ISO8601 형식으로 Date를 보내고 있기 때문에 우리도 그에 맞춰서 변환해 주면 된다.
let dateFormatter = ISO8601DateFormatter()
dateFormatter.formatOptions = [.withInternetDateTime, .withFractionalSeconds, .withTimeZone]
if let date = dateFormatter.date(from: self) {
print(date)
} else {
print("날짜를 파싱하는데 실패했습니다.")
}
해당 코드는 이렇게 작성했다.
.withInternetDateTime: 날짜 + 'T' + 시:분:초 + 타임존 표시
.withFractionalSeconds: 밀리초까지 표시함
.withTimeZone: 날짜 + 타임존
위에 하나만 써도 아래 두 개는 쓰지 않아도 되지 않나?! 싶지만...
찾아보니 .withFullDate, .withFullTime, .withInternetDateTime 세 가지 옵션 중 하나를 선택하고 여러 옵션을 골라서 추가적으로 적용하는 방식 같다.
여러 옵션의 종류는 아래와 같음.
.withYear, .withMonth, .withWeekOfYear, .withDay, .withTime, .withTimeZone, .withSpaceBetweenDateAndTime, .withDashSeparatorInDate, .withColonSeparatorInTime, .withFractionalSeconds
특정 시간을 현재 시간과 비교하여 인스타그램처럼 나타내기

date에 이런 formatter가 있어서 활용해 보려고 한다. ^___^
공식 문서의 설명에서도 볼 수 있듯이 1시간 전 / 어제 / 내일과 같은 문자열을 만들어 준다.
let formatter = RelativeDateTimeFormatter()
formatter.locale = Locale(identifier: "ko-KR") // 나라 설정
formatter.dateTimeStyle = .named // named / numeric이 있는데 그 중 단어로 말해주는 거~
formatter.localizedString(for: self, relativeTo: Date()) // String으로 변환!

dateTimeSytle의 경우에는 다음과 같으며 ,,

numeric과 named의 차이는 위와 같당. ^___^
대박,,,,,,,,,,,,,,
뻘하지만 scrollView를 항상 어려워했는데
이번에 혼자 구현하면서 스크롤뷰를 그래도? 손쉽게 구현했다
나 발전하고잇구나..
참고 자료
https://developer.apple.com/documentation/foundation/relativedatetimeformatter
RelativeDateTimeFormatter | Apple Developer Documentation
A formatter that creates locale-aware string representations of a relative date or time.
developer.apple.com
https://zeddios.tistory.com/775
Relative Date Time Formatter / List Formatter 사용해보기
안녕하세요 :) Zedd입니다.저번글 Ordered Collection Diffing를 쓰다가 Advances in Foundation를 다시 보게됐는데, 여기서 소개된 기능(?)이 정말 많아요! 아직 안보셨다면 꼭 보는걸 추천..!!!암튼 그중 하나인
zeddios.tistory.com
............................
나 왜케 안 올렸지?! 하고 글쓰기를 눌러보니 이전에 써놨던 글이 있더라
어이가업슴...
그냥 바로 올릴 것이지~~~!!!!!
일단 그냥 .... 날짜가 적혀 있는대로 올리려구 한다.
내일은 ....... 진짜. 잘. 올릴것.
'TIL' 카테고리의 다른 글
[docker] Ubuntu에 Tomcat server 세팅하기 on mac (1) | 2024.04.12 |
---|---|
[SeSAC] December 2, 2023 (1) | 2023.12.03 |
[SeSAC] November 30, 2023 (0) | 2023.12.01 |
[SeSAC] November 27, 2023 (1) | 2023.11.28 |
[SeSAC] November 20, 2023 (0) | 2023.11.21 |