如何获得最新一周,一个月,一年从现在排除,今年开始的第一天,一个月

问题描述:

class func getDateFor(forOption: Int) -> String { 

    let unit : NSCalendarUnit = [.WeekOfYear, .Month, .Year][forOption] 
    let calendar = NSCalendar.currentCalendar() 
    let date = calendar.dateByAddingUnit(unit, value: -1, toDate: NSDate(), options: NSCalendarOptions.WrapComponents) 
    let formatter = NSDateFormatter() 
    formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" 
    formatter.timeZone = NSTimeZone(forSecondsFromGMT: 0) 
    formatter.locale = NSLocale(localeIdentifier: "en_US_POSIX") 
    var returnDate = formatter.stringFromDate(date!) 
    returnDate = returnDate.stringByReplacingOccurrencesOfString(":", withString: "%3A") 
    return returnDate 
} 

当选择如何获得最新一周,一个月,一年从现在排除,今年开始的第一天,一个月

  1. 周选择什么其实我想要的是:应该在返回日期包括今天在内的7天。 (说,今天是星期一,因此返回的日期应该是上周二的日期。)

  2. 月:应该从这个当周返回第四周我包含本周,如果我在第四周应该返回一周一次。

  3. 年份:应该从今天的月份返回第11个月。 (说,这是六月,所以返回的月份应该是七月。)

当前似乎是返回值,包括开始日期。提前致谢。

+0

那么,在得到两票反对的问题上有什么错误,关心的是编程智慧? – Lazy

let decreaseUnit: NSCalendarUnit = [.Day, .WeekOfYear, .Month][forOption] 
let date = calendar.dateByAddingUnit(decreaseUnit, value: 1, toDate: dateIncluding!, options: NSCalendarOptions()) 

添加以下代码行使我的解决方案。