【问题标题】:Set NSDate to current year from String without year, Swift将 NSDate 从没有年份的字符串设置为当前年份,Swift
【发布时间】:2016-01-27 01:32:55
【问题描述】:

我从网上提取了一个字符串,格式为“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"

谢谢!

【问题讨论】:

  • 如果目标 c 版本适合您,那么 swift 实现将是相同的,因为它使用 Foundation 类。自动完成是你的朋友。
  • 如果你在 Objective-C 中有答案,那么既然你已经有了答案,那么你的问题是什么?

标签: ios swift nsdate nsdateformatter


【解决方案1】:

只需将一行代码添加到您的 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)

【讨论】:

    【解决方案2】:

    不确定这是否是最好的方法,因为我对编程有点陌生。但我会做这样的事情,我想工作得很好(我知道顺序有点混乱,但我只是在几分钟内完成了这个,而没有让代码“看起来不错”^^):

    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)
    

    【讨论】:

    • 你的日期格式是错误的Y 这是你必须使用的 WeekOfYear yyyy
    • 真的吗?我不确定,但打印声明给了我想要的结果?!
    • 我只是用 yyyy 而不是 YYYY 试了一下,给了我完全相同的打印。但也许你的答案更正确,idk :-D
    • 你只测试了年初的一个日期
    • 不要使用YYYY。使用yyyy
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-30
    • 1970-01-01
    • 1970-01-01
    • 2013-10-12
    相关资源
    最近更新 更多