我可以通过以下方式获得GMT的偏移秒数:TimeZone.current.secondsFromGMT()
。
但是,如何将格式设为±hh:mm
?
答案 0 :(得分:18)
一些整数运算来获得以小时为单位的偏移量 分:
let seconds = TimeZone.current.secondsFromGMT()
let hours = seconds/3600
let minutes = abs(seconds/60) % 60
格式化打印:
let tz = String(format: "%+.2d:%.2d", hours, minutes)
print(tz) // "+01:00"
%.2d
打印一个带有(至少)两位小数的整数(和前导数字)
必要时为零)。 %+.2d
是相同的,但带有+
个引号
非负数。
答案 1 :(得分:1)
此处是用于获取时区偏移量差和±hh:mm ( Swift 4代码)
的扩展名extension TimeZone {
func offsetFromUTC() -> String
{
let localTimeZoneFormatter = DateFormatter()
localTimeZoneFormatter.timeZone = self
localTimeZoneFormatter.dateFormat = "Z"
return localTimeZoneFormatter.string(from: Date())
}
func offsetInHours() -> String
{
let hours = secondsFromGMT()/3600
let minutes = abs(secondsFromGMT()/60) % 60
let tz_hr = String(format: "%+.2d:%.2d", hours, minutes) // "+hh:mm"
return tz_hr
}
}
这样使用
print(TimeZone.current.offsetFromUTC()) // output is +0530
print(TimeZone.current.offsetInHours()) // output is "+05:30"
答案 2 :(得分:0)
Swift 4及以上
extension TimeZone {
func timeZoneOffsetInHours() -> Int {
let seconds = secondsFromGMT()
let hours = seconds/3600
return hours
}
func timeZoneOffsetInMinutes() -> Int {
let seconds = secondsFromGMT()
let minutes = abs(seconds / 60)
return minutes
}
}
答案 3 :(得分:0)
如果你可以使用Date()
func getCurrentTimezone() -> String {
let localTimeZoneFormatter = DateFormatter()
localTimeZoneFormatter.dateFormat = "ZZZZZ"
return localTimeZoneFormatter.string(from: Date())
}
将返回“+01:00”格式