web-dev-qa-db-ja.com

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をフォーマットしています。

10
ma11hew28

コメンテーターの@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())

フォーマット文字列の完全な説明は、 "データフォーマットガイド" にあります。

46
Grimxn

NSDateFormatterStyleを使用する別の例を次に示します。

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

出力は、「1990年1月1日」の形式になります。

フォーマッターと利用可能なさまざまなスタイルについて詳しく知りたい場合は、NSDateFormatterセクションの NSFormatter をチェックアウトしてください。

2
Zorayr

私が使用する関数。

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