获取年度的第一周 NSCalendar
Getting first week of the Year NSCalendar
我正在尝试将一周的开始日期放入应用程序中。
然而在 2017 年,这会导致意外行为,因为今年有 2 次“1”周,
1 月 1 日星期日和 12 月 31 日星期日开始。
我的程序找到了后者。给我的结果
'01-01-2018' 应该在哪里,'02-01-2017'
我如何确保我的程序找到第一个可用的日期?
这是我的代码:
getFirstDay(Int(weekNummer)!, year: yearWrap)
func getFirstDay(weekNumber:Int, year:Int)->String?{
let Calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!
let dayComponent = NSDateComponents()
dayComponent.weekOfYear = weekNumber
dayComponent.weekday = 2
dayComponent.year = year
var date = Calendar.dateFromComponents(dayComponent)
if ((weekNumber == 1 || weekNumber == 52 || weekNumber == 53) && Calendar.components(.Month, fromDate: date!).month != 1 ){
dayComponent.year = year - 1
date = Calendar.dateFromComponents(dayComponent)
}
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy"
return String(dateFormatter.stringFromDate(date!))
}
让我们做NSCalendar
完整的日期数学运算
func firstDayOfWeek(week: Int, inYear year : Int) -> NSString {
let calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!
let components = NSDateComponents()
components.weekOfYear = week
components.yearForWeekOfYear = year
components.weekday = 2 // First weekday of the week (Sunday = 1)
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy"
let date = calendar.dateFromComponents(components)!
return dateFormatter.stringFromDate(date)
}
firstDayOfWeek(1, inYear : 2017) // 02-01-2017
firstDayOfWeek(1, inYear : 2018) // 01-01.2018
我正在尝试将一周的开始日期放入应用程序中。 然而在 2017 年,这会导致意外行为,因为今年有 2 次“1”周,
1 月 1 日星期日和 12 月 31 日星期日开始。 我的程序找到了后者。给我的结果 '01-01-2018' 应该在哪里,'02-01-2017'
我如何确保我的程序找到第一个可用的日期?
这是我的代码:
getFirstDay(Int(weekNummer)!, year: yearWrap)
func getFirstDay(weekNumber:Int, year:Int)->String?{
let Calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!
let dayComponent = NSDateComponents()
dayComponent.weekOfYear = weekNumber
dayComponent.weekday = 2
dayComponent.year = year
var date = Calendar.dateFromComponents(dayComponent)
if ((weekNumber == 1 || weekNumber == 52 || weekNumber == 53) && Calendar.components(.Month, fromDate: date!).month != 1 ){
dayComponent.year = year - 1
date = Calendar.dateFromComponents(dayComponent)
}
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy"
return String(dateFormatter.stringFromDate(date!))
}
让我们做NSCalendar
完整的日期数学运算
func firstDayOfWeek(week: Int, inYear year : Int) -> NSString {
let calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!
let components = NSDateComponents()
components.weekOfYear = week
components.yearForWeekOfYear = year
components.weekday = 2 // First weekday of the week (Sunday = 1)
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy"
let date = calendar.dateFromComponents(components)!
return dateFormatter.stringFromDate(date)
}
firstDayOfWeek(1, inYear : 2017) // 02-01-2017
firstDayOfWeek(1, inYear : 2018) // 01-01.2018