을 두 배로있는 NSDate에서 데이터 유형을 변환 도와주세요 수, 사용한다 당신의 문제에
class JournalNoteEntry {
var timeCreated: Date?
var value: Int?
var note: String?
}
:의이시를 쓸 수 재단의 클래스 (NS...
로 시작하는 사람들은)보다는 네이티브 스위프트의 유형 mple은 시작과 끝 날짜 사이의 모든 항목에 대한 필터링 기능 : 당신의 노력의
func entries(in journal: [JournalNoteEntry], from: Date, to: Date) -> [JournalNoteEntry] {
return journal.filter {
guard let timeCreated = $0.timeCreated else {
return false
}
// Notice that this is half-open range
return from <= timeCreated && timeCreated < to
}
}
대부분의 날짜 범위를 결정하는 것입니다.
extension Calendar {
func todayRange() -> (Date, Date) {
let startDate = self.startOfDay(for: Date())
let endDate = self.date(byAdding: .day, value: 1, to: startDate)!
return (startDate, endDate)
}
func yesterdayRange() -> (Date, Date) {
let endDate = self.startOfDay(for: Date())
let startDate = self.date(byAdding: .day, value: -1, to: endDate)!
return (startDate, endDate)
}
func thisWeekRange() -> (Date, Date) {
var components = DateComponents()
components.weekday = self.firstWeekday
let startDate = self.nextDate(after: Date(), matching: components, matchingPolicy: .nextTime, direction: .backward)!
let endDate = self.nextDate(after: startDate, matching: components, matchingPolicy: .nextTime)!
return (startDate, endDate)
}
func thisMonthRange() -> (Date, Date) {
var components = self.dateComponents([.era, .year, .month], from: Date())
components.day = 1
let startDate = self.date(from: components)!
let endDate = self.date(byAdding: .month, value: 1, to: startDate)!
return (startDate, endDate)
}
}
// Run this in Playground to see it formatted in your local timezone
// If you call print(), it will always display in UTC
// Assuming today = Nov 7, 2016
Calendar.current.todayRange() // "Nov 7, 2016, 12:00 AM", "Nov 8, 2016, 12:00 AM"
Calendar.current.yesterdayRange() // "Nov 6, 2016, 12:00 AM", "Nov 7, 2016, 12:00 AM"
Calendar.current.thisWeekRange() // "Nov 6, 2016, 12:00 AM", "Nov 13, 2016, 12:00 AM"
Calendar.current.thisMonthRange() // "Nov 1, 2016, 12:00 AM", "Dec 1, 2016, 12:00 AM"
는 현재 월 내의 모든 저널 항목을 얻으려면 : 그것을 할 수있는 한 가지 방법은 Calendar
클래스의 확장을 통해입니다
// journal is an array of JournalNoteEntry
let (startDate, endDate) = Calendar.current.thisMonthRange()
let results = entries(in: journal, from: startDate, to: endDate)
내가 시작 날짜의 배열을 만드는 게 좋을 것/오늘/어제/이번 주, 이번 달 등의 마감일을 비교합니다. – Larme
NSPredicate를 사용해 보셨습니까? –
@Larme 답장을 보내 주셔서 감사합니다. 일부 코드 게시하시기 바랍니다 –