Swift 날짜 연관성 요약
조사를 많이 했기 때문에 잊을 때 남기 위해서.
Calendar, Locale, TimeZone, DateFormatter
각자의 역할에 관하여
절대 시간 관리, 날짜 계산, 비교 등
달력에 따라 윤년과 여름철을 고려해 계산할 수 있다
언어 및 영역이 결합된 로켈 정보 저장
identifier를 보면 현재 언어를 확인할 수 있습니다
시간대 정보 유지
GMT(그리니치표준시)와의 시차로 표시
일본 표준시(JST)는 GMT+9시간
날짜 및 시간 형식 정의
데이터로 텍스트 변환
Calendar
Calendar.current를 사용하면 달력이 로컬 환경에 따라 달라지기 때문에 서력으로 지정하고자 하는 경우.gregorian으로 지정
오늘, 어제, 내일, 주말 조사
let calendar = Calendar(identifier: .gregorian)
let date = Date()
let yesterday = date.addingTimeInterval(-60 * 60 * 24)
let tommorow = date.addingTimeInterval(60 * 60 * 24)
print(calendar.isDateInToday(date)) // 今日かどうか
print(calendar.isDateInYesterday(yesterday)) // 昨日かどうか
print(calendar.isDateInTomorrow(tommorow)) // 明日かどうか
print(calendar.isDateInWeekend(date)) // 週末かどうか
새 날짜 생성(시간)
let calendar = Calendar(identifier: .gregorian)
let date = calendar.date(from: DateComponents(year: 2021, month: 3, day: 1))
let calendar = Calendar(identifier: .gregorian)
let date = Date()
let new = calendar.date(bySettingHour: 10, minute: 0, second: 0, of: date)
분, 초 따위는 버리다
let calendar = Calendar(identifier: .gregorian)
let date = Date()
let compornent = calendar.dateComponents([.year, .month, .day, .hour], from: date)
let new = calendar.date(from: compornent)
let calendar = Calendar(identifier: .gregorian)
let date = Date()
let compornent = calendar.dateComponents([.year, .month, .day, .hour, .minute], from: date)
let new = calendar.date(from: compornent)
수령 날짜(시간)
let calendar = Calendar(identifier: .gregorian)
let date = Date()
let year = calendar.component(.year, from: date) // 2021
let calendar = Calendar(identifier: .japanese)
let date = Date()
let year = calendar.component(.year, from: date) // 3
let calendar = Calendar(identifier: .gregorian)
let date = Date()
let month = calendar.component(.month, from: date) // 3
let calendar = Calendar(identifier: .gregorian)
let date = Date()
let day = calendar.component(.day, from: date) // 1
let calendar = Calendar(identifier: .gregorian)
let date = Date()
let hour = calendar.component(.hour, from: date) // 10
획득let calendar = Calendar(identifier: .gregorian)
let date = Date()
let minute = calendar.component(.minute, from: date) // 10
let calendar = Calendar(identifier: .gregorian)
let date = Date()
let second = calendar.component(.second, from: date) // 10
당일 0시 0점 획득.
let calendar = Calendar(identifier: .gregorian)
let date = Date()
calendar.startOfDay(for: date)
날짜 차이 가져오기
let calendar = Calendar(identifier: .gregorian)
let date = Date()
let date2 = calendar.date(from: DateComponents(year: 2021, month: 3, day: 10))
calendar.dateComponents([.day], from: date, to: date2!).day // 9
let calendar = Calendar(identifier: .gregorian)
let date = calendar.startOfDay(for: Date())
var date2 = calendar.date(from: DateComponents(year: 2021, month: 3, day: 10))
date2 = calendar.startOfDay(for: date2!)
calendar.dateComponents([.day], from: date, to: date2!).day // 9
날짜 상가/감법
let calendar = Calendar(identifier: .gregorian)
let date = Date()
let modifiedDate = calendar.date(byAdding: .day, value: 1, to: date)!
let calendar = Calendar(identifier: .gregorian)
let date = Date()
let modifiedDate = calendar.date(byAdding: .day, value: -1, to: date)!
시간을 계산하다
let calendar = Calendar(identifier: .gregorian)
let date = Date()
let modifiedDate = calendar.date(byAdding: .hour, value: 1, to: date)!
let calendar = Calendar(identifier: .gregorian)
let date = Date()
let modifiedDate = calendar.date(byAdding: .hour, value: -1, to: date)!
Locale
Locale 식별자는 언어(Language)와 지역(Region)을 결합한 String 문자열입니다.
언어와 지역은 기본 형식입니다. 예를 들어 일본어+일본지역의 경우 ja입니다.JP
let locale = Locale.current
let identifier = locale.identifier
let locale = Locale(identifier: "ja_JP")
Xcode에서 응용 프로그램의 현지화 언어 변경
Xcode의 Targets → info에서 빨간 테두리를 Japan으로 바꿉니다
TimeZone
iOS에서 사용하는 터미널의 위치 정보에 따라 시간대를 설정합니다
시간대를 지정하고 싶을 때 변경합니다
let timezone = TimeZone.current
let timezone = TimeZone(identifier: "Asia/Shanghai")
DateFormatter
DateFormater에는 데이터 스타일과 타임 스타일이 있습니다.
출력
.full
2021년 3월 1일 월요일
.long
2021년 3월 1일
.midium
2021/03/01
.short
2021/03/01
timeStyle
출력
.full
일본 시간으로 15시 21분 30초.
.long
15:21:30 JST
.midium
15:21:30
.short
15:21
let formatter = DateFormatter()
formatter.calendar = Calendar(identifier: .gregorian)
formatter.dateStyle = .long
formatter.locale = Locale(identifier: "ja_JP")
let date = Date()
let dateStr = formatter.string(from: date)
print(dateStr) // 2021年3月1日
let formatter = DateFormatter()
formatter.calendar = Calendar(identifier: .japanese)
formatter.dateStyle = .long
formatter.locale = Locale(identifier: "ja_JP")
let date = Date()
let dateStr = formatter.string(from: date)
print(dateStr) // 令和3年3月1日
let formatter = DateFormatter()
formatter.calendar = Calendar(identifier: .gregorian)
formatter.locale = Locale(identifier: "ja_JP")
formatter.dateFormat = "yyyy年M月d日(EEEEE) H時m分s秒"
let dateStr = "2021年3月1日(月) 10時10分10秒"
let date = formatter.date(from: dateStr)
print(date!) // 2021-03-01 10:10:10 +0000
끝말
틀렸거나 더 이렇게 하는 게 좋아요!만약 무슨 문제가 있으면 저에게 알려 주세요.
다음은 참고한 문장을 총결해 보겠습니다.
참고 자료
Reference
이 문제에 관하여(Swift 날짜 연관성 요약), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/chikari/articles/803872116268ce텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)