Swift:使用strftime和&amp ;;进行NSDate格式化当地时间

时间:2014-06-17 02:50:40

标签: objective-c c swift strftime localtime

如何将以下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

4 个答案:

答案 0 :(得分:46)

评论员@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())

"Data Formatting Guide"中提供了格式字符串的完整说明。

答案 1 :(得分:2)

以下是使用NSDateFormatterStyle的另一个示例:

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

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

如果您想了解有关格式化程序和不同可用样式的更多信息,请查看 NSDateFormatter 部分下的NSFormatter

答案 2 :(得分:1)

我使用的功能。

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")

答案 3 :(得分:-1)

    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