这是一个工作函数,将分钟数转为最接近的五分钟。 我需要的是返回特定时区的时间,所以无论你是时间+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)!
}
答案 0 :(得分:1)
Dates does not have time zones.所以没有什么可以转换的。日历和格式化程序具有时区。
因此,您应该做的是为不同的时区选择正确的日历。然后,您可以使用第二个日历对象获取此时区的单位。