如何将字符串转换为具有无关字符(swift)的 NSDate?

How to convert string to NSDate that has extraneous characters (swift)?

我有字符串 "Sat, 21 Nov 2015 19:20:48 EST\n\t\t\t",我需要将其转换为 NSDate,但它一直给我 nil。

  1. 我试图通过
  2. 清除字符串

dateString.stringByReplacingOccurrencesOfString("\"", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)

结果看起来不错:2015 年 11 月 21 日星期六 19:20:48。转换为 NSDate = nil :(

  1. 好的,我手动删除了噪声字符并尝试将字符串 "Sat, 21 Nov 2015 19:20:48 EST" 转换为 NSDate。 再次为零:

let dateString = "Sat, 21 Nov 2015 19:20:48 EST" let formatter = NSDateFormatter() formatter.locale = NSLocale(localeIdentifier: 'US_en')

formatter.dateFormat = 'yyyy-MM-dd' print("date = \(date)") //date = nil

我做错了什么?

即使我使用 "formatter.timeZone = NSTimeZone(abbreviation: "EST")" 仍然是零。

Answer to your first question:

您可以使用以下代码 trim 字符串中不需要的空格和换行符

var dateAsString = "Sat, 21 Nov 2015 19:20:48 EST\n\t\t"
dateAsString = dateAsString.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())

Answer to your second question:

有关所有字符串格式符号的列表,请参阅此 link 中的日期格式符号 table。

您应该可以使用此格式化程序转换指定日期,

let customDateFormatter = NSDateFormatter()
dayTimePeriodFormatter.dateFormat = "EEE, dd MMM yyyy HH:mm:ss zzz"

let date = dayTimePeriodFormatter.dateFromString(dateAsString) //"Sat, 21 Nov 2015 19:20:48 EST"