Swift:使用strftime和localtime进行NSDate格式化

如何将以下Objective-C代码转换为Swift代码?

#define MAX_SIZE 11 char buffer[MAX_SIZE]; time_t time = [[NSDate date] timeIntervalSince1970]; strftime(buffer, MAX_SIZE, "%-l:%M\u2008%p", localtime(&time)); NSString *dateString = [NSString stringWithUTF8String:buffer]; NSLog(@"dateString: %@", dateString); // dateString: 11:56 PM 

我正在格式化date

正如评论员@BryanChen和@JasonCoco所说,使用NSDateFormatter。

 let dateFormatter = NSDateFormatter() dateFormatter.dateFormat = "yyyy-MM-dd 'at' h:mm a" // superset of OP's format let str = dateFormatter.stringFromDate(NSDate()) 

“数据格式指南”中提供了格式字符串的完整说明。

这是另一个使用NSDateFormatterStyle示例:

 private func FormatDate(date:NSDate) -> String { let dateFormatter = NSDateFormatter() dateFormatter.dateStyle = NSDateFormatterStyle.LongStyle return dateFormatter.stringFromDate(date) } 

输出格式为“ 1990年1月1日 ”。

如果您想要阅读有关格式化程序和不同可用样式的更多信息, 请在NSDateFormatter部分下结帐, NSFormatter 。

我使用的function。

 extension NSDate { public func toString (format: String) -> String { let formatter = NSDateFormatter () formatter.locale = NSLocale.currentLocale() formatter.dateFormat = format return formatter.stringFromDate(self) } } date.toString("yyyy-MM-dd") 
  let maxSize: UInt = 11 var buffer: CChar[] = CChar[](count: Int(maxSize), repeatedValue: 0) var time: time_t = Int(NSDate().timeIntervalSince1970) var length = strftime(&buffer, maxSize, "%-l:%M\u2008%p", localtime(&time)) var dateString = NSString(bytes: buffer, length: Int(length), encoding: NSUTF8StringEncoding) NSLog("dateString: %@", dateString) // dateString: 11:56 PM