2015-04-19 1 views
1

Я знаю, что следующий код возвращает время по Гринвичу, и мы в настоящее время GMT + 1. Я пытаюсь адаптировать мой код, чтобы вернулась правильная дата. Если я просто добавлю 1 час кода, он не сработает, когда GMT + 1 вернется к GMT. Есть идеи?Не удается получить заданную дату при использовании NSDateComponents

let gregorian = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)! 
    gregorian.timeZone = NSTimeZone.localTimeZone() 
    var unitFlags : NSCalendarUnit = NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitWeekOfYear | NSCalendarUnit.CalendarUnitWeekday 
    gregorian.firstWeekday = 2 
    var components:NSDateComponents = gregorian.components(unitFlags, fromDate: date) 
    components.weekday = 2 
    components.hour = 0 
    components.minute = 0 
    components.second = 0 

    let resultDate:NSDate = gregorian.dateFromComponents(components)! 

    println("The resultDate is \(resultDate)") 
+0

println() NSDate всегда печатает дату в GMT (что не делает ее «неправильной»). Это похоже на ту же проблему, что и в предыдущем вопросе. - Чтобы распечатать дату в соответствии с местным часовым поясом, вы должны преобразовать ее обратно в строку с помощью NSDateFormatter. –

+0

Спасибо, Мартин, я беру две даты и создаю отчет о значениях, которые находятся между двумя датами в формате pdf. Я знаю, что я могу использовать NSDateFormatter для преобразования дат в строковые значения. Я просто не могу утверждать, что даты правильные. – Tom

ответ

0

Я адаптировал свой код со следующими строками. Буду признателен, если кто-нибудь сможет обнаружить ошибки. Код действительно работает.

var currentZone = NSTimeZone.localTimeZone() 
    if (currentZone.isDaylightSavingTimeForDate(date)) { 

     components.hour = +1 

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