Commit
This commit is contained in:
@ -25,13 +25,7 @@ extension Date {
|
||||
var isToday: Bool {
|
||||
return Calendar.current.isDateInToday(self)
|
||||
}
|
||||
|
||||
private func isSameDate(_ date1: Date?, _ date2: Date?) -> Bool {
|
||||
guard let date1 = date1, let date2 = date2 else { return false }
|
||||
let calendar = Calendar.current
|
||||
return calendar.isDate(date1, inSameDayAs: date2)
|
||||
}
|
||||
|
||||
|
||||
func fetchWeek(_ date: Date = .init()) -> [WeekDay] {
|
||||
let calendar = Calendar.current
|
||||
let startOfDate = calendar.startOfDay(for: date)
|
||||
@ -56,6 +50,31 @@ extension Date {
|
||||
return week
|
||||
}
|
||||
|
||||
func fetchMonth(_ date: Date = .init()) -> [MonthWeek] {
|
||||
let calendar = Calendar.current
|
||||
let startOfDate = calendar.startOfDay(for: date)
|
||||
|
||||
let weekForDate = calendar.dateInterval(of: .weekOfMonth, for: startOfDate)
|
||||
|
||||
guard let startOfWeek = weekForDate?.start else {
|
||||
return []
|
||||
}
|
||||
|
||||
var month: [MonthWeek] = []
|
||||
|
||||
for weekIndex in 0..<5 {
|
||||
var week: [WeekDay] = []
|
||||
for dayIndex in 0..<7 {
|
||||
if let weekDay = calendar.date(byAdding: .day, value: (weekIndex * 7 + dayIndex), to: startOfWeek) {
|
||||
week.append(WeekDay(date: weekDay))
|
||||
}
|
||||
}
|
||||
month.append(MonthWeek(week: week))
|
||||
}
|
||||
|
||||
return month
|
||||
}
|
||||
|
||||
func createNextWeek() -> [WeekDay] {
|
||||
let calendar = Calendar.current
|
||||
let startOfLastDate = calendar.startOfDay(for: self)
|
||||
@ -78,4 +97,9 @@ extension Date {
|
||||
var id: UUID = .init()
|
||||
var date: Date
|
||||
}
|
||||
|
||||
struct MonthWeek: Identifiable {
|
||||
var id: UUID = .init()
|
||||
var week: [WeekDay]
|
||||
}
|
||||
}
|
||||
|
@ -11,4 +11,17 @@ extension View {
|
||||
func isSameDate(_ date1: Date, _ date2: Date) -> Bool {
|
||||
return Calendar.current.isDate(date1, inSameDayAs: date2)
|
||||
}
|
||||
|
||||
func isDateInCurrentMonth(_ date: Date) -> Bool {
|
||||
let calendar = Calendar.current
|
||||
let currentDate = Date()
|
||||
|
||||
let currentMonth = calendar.component(.month, from: currentDate)
|
||||
let currentYear = calendar.component(.year, from: currentDate)
|
||||
|
||||
let dateMonth = calendar.component(.month, from: date)
|
||||
let dateYear = calendar.component(.year, from: date)
|
||||
|
||||
return currentMonth == dateMonth && currentYear == dateYear
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user