gpt4 book ai didi

ios - 为什么我不能使用 NSDateFormatter 将我的 NSDate 格式化为指定的时区?

转载 作者:行者123 更新时间:2023-11-28 13:14:40 27 4
gpt4 key购买 nike

我想获取一个以字符串形式表示且时区为 GMT+1 的日期,并将其显示在本地时区为 GMT+10 的屏幕上。

我有两种方法,一种是从字符串创建日期(使用 GMT+1 timeZone),另一种是将日期格式化为字符串(使用 localTimeZone GMT+10):

func dateFromString(dateString: String) -> NSDate? {
let dateFormatter = NSDateFormatter()
dateFormatter.timeZone = NSTimeZone(abbreviation: "GMT+1")
dateFormatter.dateFormat = "M/d/yyyy hh:mma"

return dateFormatter.dateFromString(dateString)
}

func stringFromDate(date: NSDate) -> String {
let dateFormatter = NSDateFormatter()
dateFormatter.timeZone = NSTimeZone.localTimeZone()
dateFormatter.timeStyle = NSDateFormatterStyle.ShortStyle

return dateFormatter.stringFromDate(date)
}

在 Playground 上,当我这样做时:

let date = dateFromString("4/8/2015 1:29am")!
println(date)
println(stringFromDate(date))

我在右侧得到以下输出:

"Apr 8, 2015, 1:29 AM"
"2015-04-07 15:29:00 +0000"
"1:29 AM"

我不明白为什么我没有得到我期待和寻找的东西:

"Apr 8, 2015, 1:29 AM"
"2015-04-08 10:29:00 +0000"
"10:29 AM"

怎么了?

最佳答案

输入格式化程序需要在它们的字符串中包含时区。像这样:

func dateFromString(dateString: String) -> NSDate? {
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "M/d/yyyy hh:mma z"

return dateFormatter.dateFromString(dateString)
}

let date = dateFromString("4/8/2015 1:29am GMT+01")!

另请注意,NSTimeZone 名称具有两位数的偏移量。在 Playground 上比较

var oops = NSTimeZone(abbreviation: "GMT+1")
var righteous = NSTimeZone(abbreviation: "GMT+01")

第一个是零,第二个不是。

关于ios - 为什么我不能使用 NSDateFormatter 将我的 NSDate 格式化为指定的时区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29504013/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com