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