将不带年份的字符串的 NSDate 设置为当前年份,Swift

Set NSDate to current year from String without year, Swift

我有一个从网上提取的格式为 "Sat, Jan 30 @ 11:00 AM" 的字符串,我想将其转换为 NSDate。我可以使用下面的代码这样做,但年份默认为 2000。

如何将我的 NSDate 的年份设置为当前年份?

                    var dateString = "Sat, Jan 30 @ 11:00 AM"

                    let dateFormatter = NSDateFormatter()

                    dateFormatter.dateFormat = "EEE, MMM dd @ hh:mm a"

                    let date = dateFormatter.dateFromString(dateString)

                    //date output is 2000-01-30 19:00:00 +0000

我相信这是 Objective-C 答案: “a date string without year to NSDate with year

谢谢!

不确定这是否是最好的方法,因为我是编程新手。但我会做类似的事情,我想效果很好(我知道顺序有点混乱,但我只是在几分钟内完成了这个而没有制作代码 "look good" ^^):

var dateString = "Sat, Jan 30 @ 11:00 AM"

    let dateFormatter = NSDateFormatter()

    dateFormatter.dateFormat = "YYYY EEE, MMM dd @ hh:mm a"

    //let date = dateFormatter.dateFromString(dateString)

    let currentDate = NSDate()
    let newFormatter = NSDateFormatter()
    newFormatter.dateFormat = "YYYY"

    let YearString = newFormatter.stringFromDate(currentDate)
    let newDateString = String(YearString + " " + dateString)
    let date = dateFormatter.dateFromString(newDateString)
    print(date)

只需将一行代码添加到您的 dateFormatter (Swift 3)

var dateString = "Sat, Jan 30 @ 11:00 AM"

let dateFormatter = NSDateFormatter()

dateFormatter.dateFormat = "EEE, MMM dd @ hh:mm a"

dateFormatter.defaultDate = Date() // New Line

let date = dateFormatter.dateFromString(dateString)