2016-07-05 8 views
1

を取得しますcurrentDateは、Stringの代わりにNSDateの代わりに渡される有効なパラメータではありませんは、私はスウィフトに日付と時刻を取得するに探していると、これは短い、読みやすい日付/時刻の出力を取得するための推奨される戦略で日付と時刻スウィフト

なぜこのような場合がわかりますか?私は日付と時刻を取得するときにこれに似たアプローチしか見つけていません。本当にありがとう、すべての助けに感謝します!

+5

dateFromStringではなく、stringFromDate。 –

答えて

3

あなたは本当にStringNSDateから行くので、stringFromDateを使用したい:ここ

let convertedDate = formatter.stringFromDate(currentDate) 
+0

ああそれは理にかなっています。ありがとうございました。 –

1

は、あなたが迅速な3構文でそれを行うことができます正確にどのようにある -

let currentDate = NSDate() 
let formatter = DateFormatter() 
formatter.locale = Locale.current() 
formatter.dateStyle = .shortStyle 
formatter.timeStyle = .shortStyle 

let convertedDate = formatter.string(from: currentDate as Date) 

BR

0

Leo Dabusは、Friso BuurmanによってこのQuestionにNSDateからStringを取得するための良い拡張を書きました。 OBRIGADOレオは

改造注意してください:私はそれとから借りてきた再書かれは、元のコードでは、新しいコーダーのために混乱することができstatic constantsstring variablesargument parametersの宣言に同じ変数名を使用しているため。

これはLeoの素晴らしい拡張機能で、ほとんどNSDateFormatterボイラープレートコードが含まれています(Apple docs)。

スウィフト2

extension NSDateFormatter { 
convenience init(stringDateFormat: String) { 
    self.init() 
    self.dateFormat = stringDateFormat 
} 
} 

extension NSDate { 
struct Formatter { 
    static let newDateFormat = NSDateFormatter(stringDateFormat: "dd-MM-yyyy") 
} 
var myNewDate: String { 
    return Formatter.newDateFormat.stringFromDate(self) 
} 
} 

コンソール出力:

print(NSDate().myNewDate) // "05-07-2016\n" 

スウィフト3

extension DateFormatter { 
convenience init(stringDateFormat: String) { 
    self.init() 
    self.dateFormat = stringDateFormat 
} 
} 

extension Date { 
struct Formatter { 
    static let newDateFormat = DateFormatter(stringDateFormat: "dd-MM-yyyy") 
} 
var myNewDate: String { 
    return Formatter.newDateFormat.string(from: self) 
} 
} 

コンソール出力:

print(Date().myNewDate) // "05-07-2016\n" 
関連する問題