我如何转换为特定的时区?

时间:2016-03-14 12:37:57

标签: ios swift nscalendar

这是一个工作函数,将分钟数转为最接近的五分钟。 我需要的是返回特定时区的时间,所以无论你是时间+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)!

}

1 个答案:

答案 0 :(得分:1)

Dates does not have time zones.所以没有什么可以转换的。日历和格式化程序具有时区。

因此,您应该做的是为不同的时区选择正确的日历。然后,您可以使用第二个日历对象获取此时区的单位。