2016-06-27 2 views
-2
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. Week: Если вернуться дату 7 дней с сегодняшнего дня, включая сегодня. (Скажем, сегодня понедельник. Таким образом, дата возвращения должна быть датой последнего вторника.)

  2. Месяц: Должен вернуться на четвертый с этой текущей недели, когда я нахожусь на этой неделе, так что, если я нахожусь на четвертой неделе, первая неделя'.

  3. Год: Должно возвращаться 11-го месяца с сегодняшнего месяца. (Скажем, это июнь, поэтому возвращенный месяц должен быть июль.)

Текущее значение, похоже, возвращает значения, включая даты начала. Заранее спасибо.

+0

Так что же было так неправильно в вопросе о том, что он получил два голоса, заботясь о том, чтобы пролить мудрость программирования? – Lazy

ответ

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

Добавив следующую строку кода, я получил свое решение.

Смежные вопросы