전체 TaskViewModel 코드
import SwiftUI
class TaskViewModel: ObservableObject {
@Published var currentWeek: [Date] = []
@Published var currentDate: Date = Date()
@Published var filteredTask: [Task]?
@Published var addNewTask: Bool = false
@Published var editTask: Task?
init() {
fetchCurrentWeek()
}
func fetchCurrentWeek() {
let today = Date()
let calendar = Calendar.current
guard let firstWeekDay = calendar.date(from: calendar.dateComponents([.yearForWeekOfYear, .weekOfYear], from: today)) else {
return
}
let weekdayRange = calendar.range(of: .weekday, in: .weekOfYear, for: today)!
let days = (weekdayRange.lowerBound..<weekdayRange.upperBound).compactMap { calendar.date(byAdding: .day, value: $0 - 1, to: firstWeekDay) }
currentWeek = days
}
func extractDate(date: Date, format: String) -> String {
let formatter = DateFormatter()
formatter.dateFormat = format
return formatter.string(from: date)
}
func isToday(date: Date) -> Bool {
let calender = Calendar.current
return calender.isDate(currentDate, inSameDayAs: date)
}
func isCurrentHour(date: Date) -> Bool {
let calender = Calendar.current
let hour = calender.component(.hour, from: date)
let currentHour = calender.component(.hour, from: Date())
return hour == currentHour
}
}
전체 TaskViewModel 코드