iOS Swift:当字符串包含时区缩写时,如何将特定的日期字符串格式转换为Date对象?

iOS Swift: how to convert specific date string format to Date object, when string contains time zone abbreviation?

我从服务器获取日期字符串,格式为" March 08,2018 16:00:00 PST",其中"月份"和"日期"之间有很多空格。

我的目的是基本上删除那些多余的空格。 我的想法是-我将字符串转换为Date对象,然后再转换回字符串。

考虑到时区,如何使用Date Formatter将其转换为Date对象。

我担心这里的" PST"。 在将Date转换为String时,我将需要采用以下格式-" MST 08,2018 16:00:00 PST",即PST(或任何时区)应在最终字符串中保持不变。


1
2
3
4
5
6
7
8
9
10
11
12
extension String {
    func getDate(fromFormat format: String ="MMMM dd, yyyy HH:mm:ss zzz") -> Date? {
      let dateFormatter = DateFormatter()
      dateFormatter.dateFormat = format
      dateFormatter.locale =  Locale(identifier:"en_US_POSIX")
      return dateFormatter.date(from: self)
  }
}


let myDateString ="March 08, 2018 16:00:00 PST"
myDateString.getDate()

您也可以使用其他时间格式进行呼叫。


试试这个

1
2
3
4
5
6
class  func stringToDate (dateString:String, dateFormat:String) -> Date? {
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = dateFormat
    let dateFromString = dateFormatter.date(from: dateString)
    return dateFromString
}


试试这个

1
2
3
4
    let isoDate ="March 08, 2018 16:00:00 PST"
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat ="MMMM dd, yyyy HH:mm:ss z"
    let date = dateFormatter.date(from: isoDate)!