본문 바로가기
Swift

[iOS] About Calendar

by dsungc 2024. 8. 28.

이번 게시글에서는 날짜와 관련된 속성들을 알아보려고 합니다~

왜와이?!?!

 

곧 있을 플젝에 쓰려구요~

 

자 우선 Calendar부터 갑니다

Calendar

let currentDate = Date() // 현재 날짜

// 현재 지역 및 설정에 맞는 달력
let calendar = Calendar.current

// 현재 날짜에서 연도, 월, 일 추출
let year = calendar.component(.year, from: currentDate)
let month = calendar.component(.month, from: currentDate)
let day = calendar.component(.day, from: currentDate)
print("Year: \(year), Month: \(month), Day: \(day)")

// 날짜에 1일 추가
if let tomorrow = calendar.date(byAdding: .day, value: 1, to: currentDate) {
    print("Tomorrow's Date: \(tomorrow)")
}
// 날짜에 1일 빼기
if let yesterday = calendar.date(byAdding: .day, value: -1, to: currentDate) {
    print("Tomorrow's Date: \(yesterday)")
}

// 날짜에 1개월 추가
if let nextMonth = calendar.date(byAdding: .month, value: 1, to: currentDate) {
    print("Tomorrow's Date: \(nextMonth)")
}

 

위의 예시 뿐만 아니라 .year, .hour, .second, .minute 을 사용해 추가적으로 사용자가 원하는 값을 직접 얻을 수 있습니다.

 

또 좀 특이했던 속성도 있었는데요

아래 두 속성을 통해 내가 지정한 날짜가 오늘인지 내일인지 주말인지도 알 수 있더라구요

if calendar.isDateInToday(currentDate) {
    print("오늘입니다!")
}

if calendar.isDateInWeekend(currentDate) {
    print("오늘은 주말입니다!")
}
if calendar.isDateInTomorrow(currentDate) {
	print("주어진 날짜는 내일입니다.")
} else {
	print("주어진 날짜는 내일이 아닙니다.")
}

 

 

마지막으로 소개드릴 calendar의 요소는요 이전 글에서도 다뤘던 친구인데요

 

let date1 = Date() // 현재 날짜와 시간
let date2 = calendar.date(byAdding: .day, value: 1, to: Date())! // 현재 날짜로부터 0일 추가, 즉 같은 날

let isSameDay = calendar.isDate(date1, inSameDayAs: date2)

 

isSameDayAs를 통해 두 날짜가 서로 같은 날인지 알 수 있는 속성도 있습니다.

 

Calendar속성들을 짧막하게나마 정리해봤는데, 앞으로 더 생긴다면 중간중간 수정해보겠습니다~

 

 

DateComponents

이 친구는 날짜의 특정 요소를 구성하는데 사용됩니다!

var components = DateComponents()
components.year = 2024
components.month = 8
components.day = 25

if let specificDate = calendar.date(from: components) {
    print("Specific Date: \(specificDate)")
}

 

제가 다음 프로젝트에서 많이 사용할 것만 같은 날짜 차이 계산은 말이죠

let date1 = calendar.date(from: DateComponents(year: 2023, month: 9, day: 10))!
let date2 = calendar.date(from: DateComponents(year: 2024, month: 9, day: 10))!

let difference = calendar.dateComponents([.year, .month, .day], from: date1, to: date2)
print("Difference - Years: \(difference.year!), Months: \(difference.month!), Days: \(difference.day!)")

 

지금은 정리하기 위해 년/월/일 을 다 구했지만 저는 아마 .day에 대한 값정도만 사용할 것 같습니다.

 

 

DateFormatter

날짜를 문자열로 변환하거나 문자열을 날짜로 변환하는 데 사용됩니다.

 

각각의 경우를 소개시켜드리면

 

1. 날짜 > 문자열

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm"
let formattedDate = dateFormatter.string(from: Date())
print(" formattedDate: \(formattedDate)")

 

2. 문자열 > 날짜 

let dateString = "2024-09-15 14:00"
let date = dateFormatter.date(from: dateString)
print("date: \(String(describing: date))")

 

.

.

여기까지 Date와 관련된 메서드들을 알아봤는데요!

이를 사용한 프로젝트에 대한 후기까지 다~음에 들고 오겠습니다.

.

.

.

.

요기까지

'Swift' 카테고리의 다른 글

[iOS] About state, binding  (0) 2024.09.08
[iOS] About Hot & Cold Observable  (1) 2024.09.03
[iOS] About GCD (Grand Central Dispatch)  (2) 2024.08.24
[iOS] About Pagination  (0) 2024.08.21
[iOS] About Subscribe, Bind, Driver + @  (0) 2024.08.17