Как преобразовать в определенный часовой пояс?

Это рабочая функция, которая округляет минуты до ближайших пяти. Что мне нужно, так это вернуть время в определенном часовом поясе, поэтому, независимо от того, находитесь ли вы в часовом поясе +1, +5 или где-то еще, он должен вернуть часовой пояс +1. Кто-нибудь знает, как я могу это решить?

func SkipToEvenFiveMinutes(date:NSDate) -> NSDate!
{

    let componentMask : NSCalendarUnit = ([NSCalendarUnit.Year , NSCalendarUnit.Month , NSCalendarUnit.Day , NSCalendarUnit.Hour ,NSCalendarUnit.Minute, NSCalendarUnit.Second+NSTimeZone setDefaultTimeZone:UTC+1])
    let components = NSCalendar.currentCalendar().components(componentMask, fromDate: date)
    let current = components.minute * 60
    let currentSeconds = current + components.second

    let diff = currentSeconds % (60 * 5);
    let difference = Double(diff)
    if (difference > 60.0 * 2.5) {
        components.second += 60 * 5 - diff
    } else {
        components.second -= diff
    }

    return NSCalendar.currentCalendar().dateFromComponents(components)!

}

person Henrik Bjorklund    schedule 14.03.2016    source источник


Ответы (1)


Даты не имеют часовых поясов. Так что конвертировать нечего. Календари и средства форматирования имеют часовые пояса.

Итак, что вам нужно сделать, так это выбрать правильный календарь для другого часового пояса. Затем вы можете получить единицы для этого часового пояса, используя второй объект календаря.

person Amin Negm-Awad    schedule 14.03.2016