假设我有一个像“7:00”这样的输入字符串。我知道时间是EST,但我想将其转换为本地化时间(因此对于PST中的人来说,它说4点)。我尝试了下面的代码,但是我一直有24小时的时间和完整的日期(例如:可选(2000-01-01 16:00:00 +0000))。我只想要一小时:最短的时间......我做错了什么?
var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "HH:mm"
dateFormatter.timeZone = NSTimeZone.localTimeZone()
gameClock = "\(dateFormatter.dateFromString("7:30"))"
println(gameClock)
答案 0 :(得分:0)
您需要指定用于处理服务器日期的日期格式化程序的时区。默认情况下,日期格式化程序的时区是设备的默认时区。
因此,对于上面的代码,您应该这样做:
let dateStringFromServer = "07:00"
let serverDateFormatter = NSDateFormatter()
serverDateFormatter.dateFormat = "HH:mm"
serverDateFormatter.timeZone = NSTimeZone(name: "EST")
let dateFromServer = serverDateFormatter.dateFromString(dateStringFromServer)
let localDateFormatter = NSDateFormatter()
serverDateFormatter.dateFormat = "HH:mm"
let localizedStringForThatDate = localDateFormatter.stringFromDate(dateFromServer!)
答案 1 :(得分:0)
dateFormatter.dateFromString("7:30")
为您提供NSDate
而不是NSString
。您已使用另一个NSDateFormatter
对象以所需的字符串格式获取日期。
let dateFormatterForDisplay = NSDateFormatter();
dateFormatterForDisplay.dateFormat = "HH:mm"
dateFormatterForDisplay.locale = NSLocale(localeIdentifier: "en_US_POSIX")
(如果要强制使用12小时模式,则需要上面的最后一行,默认为NSLocale.currentLocale(),对于不同的语言环境,可以是12小时或24小时模式)
然后
let displayString = dateFormatterForDisplay.stringFromDate(gameClock)