在Swift中添加时间偏移

前端之家收集整理的这篇文章主要介绍了在Swift中添加时间偏移前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在数据库中有一堆不同的展示次数,并希望通过创建一个偏移量来显示基于用户时区的正确时间.

我得到用户时区偏离GMT,并将其转换为数小时.

NSTimeZone.localTimeZone().secondsFromGMT / 60 / 60

然后我需要找到一个方法添加时间到日期对象..这是我/挣扎的地方.

let formatter = NSDateFormatter()
    formatter.dateFormat = "HH:mm"

    let date = formatter.dateFromString(timeAsString)
    println("date: \(date!)")

然后,我从标签中的日期创建一个字符串,以便使用AM / PM轻松阅读.

formatter.dateFormat = "H:mm"
    formatter.timeStyle = .ShortStyle
    let formattedDateString = formatter.stringFromDate(date!)
    println("formattedDateString: \(formattedDateString)")

我似乎找不到如何添加/减少时间.我已经将字符串分开,但有时会变为负数,并且不起作用.也许我会这样做错了.

感谢任何帮助.

基思

如果要将以GMT格式存储的显示时间转换为用户的本地时区,则不应手动调整NSDate / Date对象.您应该使用与格式化程序相应的时区.例如,在Swift 3中:
let gmtTimeString = "5:00 PM"

let formatter = DateFormatter()
formatter.dateFormat = "h:mm a"
formatter.timeZone = TimeZone(secondsFromGMT: 0)            // original string in GMT
guard let date = formatter.date(from: gmtTimeString) else {
    print("can't convert time string")
    return
}

formatter.timeZone = TimeZone.current                       // go back to user's timezone
let localTimeString = formatter.string(from: date)

或在Swift 2:

let formatter = NSDateFormatter()
formatter.dateFormat = "h:mm a"
formatter.timeZone = NSTimeZone(forSecondsFromGMT: 0)  // original string in GMT
let date = formatter.dateFromString(gmtTimeString)

formatter.timeZone = NSTimeZone.localTimeZone()        // go back to user's timezone
let localTimeString = formatter.stringFromDate(date!)

猜你在找的Swift相关文章