我如何转换,NSDate到NSString,以便只有年在@“yyyy”格式输出到字符串?


当前回答

只需添加这个扩展:

extension NSDate {
    var stringValue: String {
        let formatter = NSDateFormatter()
        formatter.dateFormat = "yourDateFormat"
        return formatter.stringFromDate(self)
    }
}

其他回答

定义您自己的实用程序格式的日期所需的日期格式 如。

NSString * stringFromDate(NSDate *date)  
 {   NSDateFormatter *formatter
    [[NSDateFormatter alloc] init];  
    [formatter setDateFormat:@"MM ∕ dd ∕ yyyy, hh꞉mm a"];    
    return [formatter stringFromDate:date]; 
}

如果你没有NSDate -descriptionWithCalendarFormat:timeZone:locale: available(我不相信iPhone/Cocoa Touch包括这个),你可能需要使用strftime和一些c风格的字符串。您可以使用NSDate -timeIntervalSince1970从NSDate中获取UNIX时间戳。

iOS 15更新

iOS 15现在支持直接在Date对象上调用.格式化,而不需要显式的DateFormatter。

常见格式示例

文档

date.formatted() // 6/8/2021, 7:30 PM
date.formatted(date: .omitted, time: .complete) // 19:30
date.formatted(date: .omitted, time: .standard) // 07:30 PM
date.formatted(date: .omitted, time: .shortened) // 7:30 PM
date.formatted(date: .omitted, time: .omitted)

替代语法

文档

// We can also specify each DateComponent separately by chaining modifiers.
date.formatted(.dateTime.weekday(.wide).day().month().hour().minute())
// Tuesday, Jun 8, 7:30 pm

// Answer to specific question
date.formatted(.dateTime.year())

希望通过提供包括年、月、日和时间的正常格式化程序来增加更多的价值。 您可以使用这个格式化程序超过一年

[dateFormat setDateFormat: @"yyyy-MM-dd HH:mm:ss zzz"]; 

迅速:

var formatter = NSDateFormatter()
formatter.dateFormat = "yyyy"
var dateString = formatter.stringFromDate(YourNSDateInstanceHERE)