2016-07-05 26 views
1

Ich habe mich in das Datum und die Zeit in Swift Abrufen und dies ist die empfohlene Strategie für die Zeugung eine kurze, gut lesbare Datum/Uhrzeit Ausgabe:Erstes Datum und Uhrzeit Swift

let currentDate = NSDate() 
    let formatter = NSDateFormatter() 
    formatter.locale = NSLocale.currentLocale() 
    formatter.dateStyle = .ShortStyle 
    formatter.timeStyle = .ShortStyle 

    let convertedDate = formatter.dateFromString(currentDate) //ERROR HERE 

    print("\n\(convertedDate)") 

aber dies löst eine Ausnahme zu sagen currentDate ist kein gültiger zu übergebender Parameter, da er vom Typ NSDate statt String

ist Kannst du mir helfen zu verstehen, warum das der Fall ist? Ich habe nur ähnliche Ansätze beim Abrufen von Datum und Uhrzeit gefunden. Vielen Dank, alle Hilfe wird geschätzt!

+5

stringFromDate, nicht dateFromString. –

Antwort

3

Sie wirklich von einem NSDate zu einem String gehen wollen, so benutzen stringFromDate:

let convertedDate = formatter.stringFromDate(currentDate) 
+0

Oh. das macht mehr Sinn. Vielen Dank. –

1

Hier ist genau, wie Sie es in schnellen 3 Syntax tun können -

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 schrieb eine gute Erweiterung für einen String von NSDate in diesem Question von Friso Buurman. Obrigado Leo

Mods bitte Folgendes beachten: ich geliehen haben von ihm und neu geschrieben es, weil der ursprüngliche Code verwendet die gleichen Variablennamen für die Erklärung des static constants, string variables und argument parameters, die für neue Programmierer verwirrend sein kann.

Es ist eine großartige Erweiterung von Leo und es enthält vor allem NSDateFormatter Kode-Code können Sie in der Apple docs finden.

Swift 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) 
} 
} 

Console Output:

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

Swift 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) 
} 
} 

Console Output:

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