为 DateFormatter 设置全局时区
Set global TimeZone for DateFormatter
我在 SO 中进行了搜索,但找不到有用的线程来完成我想要的。我是 Swift 的新手,所以我对此了解不多。所以场景是我想设置一个特定的时区,用户可以使用应用程序的设置更改该时区。我想要的是当用户更改所述时区时,它应该反映在整个应用程序中。是的,我可以在每个 "DateFormatter" 中设置时区,但我不想每次创建 DateFormatter 时都写它。
有没有办法在我创建 DateFormatter 实例时将时区设置为用户选择的时区?是否可以使用 DateFormatter 的扩展来做到这一点?
你可以做的是将 Date
延期,因为你将此 TimeZone
设置为 DateFormatter
来安排你的约会,所以为 [=12= 做两个延期之一] 和一个 String
.
extension Date {
struct CustomDateFormatter {
static var currentTimeZone = TimeZone.current //Set default timeZone that you want
static func dateFormatter(withFormat format: String) -> DateFormatter {
let formatter = DateFormatter()
formatter.timeZone = CustomDateFormatter.currentTimeZone
formatter.dateFormat = format
return formatter
}
}
func toDateString(withFormat format: String) -> String {
return CustomDateFormatter.dateFormatter(withFormat: format).string(from: self)
}
}
extension String {
func toDate(withFormat format: String) -> Date? {
return Date.CustomDateFormatter.dateFormatter(withFormat: format).date(from: self)
}
}
现在,当您需要设置 TimeZone
或想要将 Date
转换为 String
或相反时,请像这样使用此扩展。
//Set timezone
Date.CustomDateFormatter.currentTimeZone = TimeZone(abbreviation: "GMT")!
//get date from String
let date = "31-05-2017 07:30:05".toDate(withFormat: "dd-MM-yyyy HH:mm:ss")
//get string from date with specific format
let dateString = Date().toDateString(withFormat: "dd-MM-yyyy HH:mm:ss")
我在 SO 中进行了搜索,但找不到有用的线程来完成我想要的。我是 Swift 的新手,所以我对此了解不多。所以场景是我想设置一个特定的时区,用户可以使用应用程序的设置更改该时区。我想要的是当用户更改所述时区时,它应该反映在整个应用程序中。是的,我可以在每个 "DateFormatter" 中设置时区,但我不想每次创建 DateFormatter 时都写它。
有没有办法在我创建 DateFormatter 实例时将时区设置为用户选择的时区?是否可以使用 DateFormatter 的扩展来做到这一点?
你可以做的是将 Date
延期,因为你将此 TimeZone
设置为 DateFormatter
来安排你的约会,所以为 [=12= 做两个延期之一] 和一个 String
.
extension Date {
struct CustomDateFormatter {
static var currentTimeZone = TimeZone.current //Set default timeZone that you want
static func dateFormatter(withFormat format: String) -> DateFormatter {
let formatter = DateFormatter()
formatter.timeZone = CustomDateFormatter.currentTimeZone
formatter.dateFormat = format
return formatter
}
}
func toDateString(withFormat format: String) -> String {
return CustomDateFormatter.dateFormatter(withFormat: format).string(from: self)
}
}
extension String {
func toDate(withFormat format: String) -> Date? {
return Date.CustomDateFormatter.dateFormatter(withFormat: format).date(from: self)
}
}
现在,当您需要设置 TimeZone
或想要将 Date
转换为 String
或相反时,请像这样使用此扩展。
//Set timezone
Date.CustomDateFormatter.currentTimeZone = TimeZone(abbreviation: "GMT")!
//get date from String
let date = "31-05-2017 07:30:05".toDate(withFormat: "dd-MM-yyyy HH:mm:ss")
//get string from date with specific format
let dateString = Date().toDateString(withFormat: "dd-MM-yyyy HH:mm:ss")