![](/img/trans.png)
[英]How to print Date&time (localized) in current timezone using SwiftDate framework
[英]How to change the timeZone in SwiftDate?
我已经在我的应用程序中显示了时区列表。 如果用户选择了特定时区,则需要由用户将本地时区更改为所选时区。
let region = Region(tz: timeZoneName.timeZone , cal: cal, loc: cal.locale!)
let date = Date().inRegion(region: region).absoluteDate
这是问题所在,该地区已更改为所选时区,但是发布本地时区的日期。
Date
包含时区。 来自Apple的文档: 独立于任何日历或时区的特定时间点。
您想向用户显示日期时,时区就会起作用。 这就是DateFormatter
的用途。 正如@ AlexWoe89所指出的,它使您可以将包含日期的字符串转换为Date
对象,还可以将给定的日期转换为表示设置为DateFormatter
的timeZone
属性的时区中的日期的字符串。
let date = Date()
var dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm"
dateFormatter.timeZone = TimeZone(identifier: "America/Los_Angeles")
let dateString1 = dateFormatter.string(from: date)
dateFormatter.timeZone = TimeZone(identifier: "Germany/Berlin")
let dateString2 = dateFormatter.string(from: date)
这会将2017-10-23 04:27
存储在dateString1中,而相同的日期将导致2017-10-23 13:27
。
您可以使用DateFormatter
作为解决方案,请尝试如下操作:
let dateString = "<yourDateAsString>"
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX") // => there are a lot of identifiers you can use
dateFormatter.timeZone = TimeZone(secondsFromGMT: 0)
dateFormatter.defaultDate = Date()
dateFormatter.dateFormat = "dd-MM-yyyy hh:mm” // => your needed time format
let convertedDate = dateFormatter.date(from: dateString)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.