Wie kann ich diesen String "2016-04-14T10:44:00+0000"
in einen konvertieren NSDate
und nur das Jahr, den Monat, den Tag und die Stunde behalten?
Das T
in der Mitte wirft wirklich ab, was ich gewohnt bin, wenn ich mit Datteln arbeite.
Wie kann ich diesen String "2016-04-14T10:44:00+0000"
in einen konvertieren NSDate
und nur das Jahr, den Monat, den Tag und die Stunde behalten?
Das T
in der Mitte wirft wirklich ab, was ich gewohnt bin, wenn ich mit Datteln arbeite.
Antworten:
Konvertieren Sie die ISO8601-Zeichenfolge in das Datum
let isoDate = "2016-04-14T10:44:00+0000"
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX") // set locale to reliable US_POSIX
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
let date = dateFormatter.date(from:isoDate)!
Rufen Sie die Datumskomponenten für Jahr, Monat, Tag und Stunde ab dem Datum ab
let calendar = Calendar.current
let components = calendar.dateComponents([.year, .month, .day, .hour], from: date)
Erstellen Sie schließlich ein neues Date
Objekt und entfernen Sie Minuten und Sekunden
let finalDate = calendar.date(from:components)
Beachten Sie auch den ISO8601DateFormatter
in iOS 10 / macOS 12 eingeführten Convenience-Formatierer :
let isoDate = "2016-04-14T10:44:00+0000"
let dateFormatter = ISO8601DateFormatter()
let date = dateFormatter.date(from:isoDate)!
.hour
Versuchen Sie das folgende Datumsformat.
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ssZZZ"
let date = dateFormatter. dateFromString (strDate)
Ich hoffe es hilft..
Swift 4.1:
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ssZZZ"
let date = dateFormatter.date(from: strDate)
In Swift 4.1 können Sie Folgendes tun:
func getDate() -> Date? {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
dateFormatter.timeZone = TimeZone.current
dateFormatter.locale = Locale.current
return dateFormatter.date(from: "2015-04-01T11:42:00") // replace Date String
}
Swift 3.0 - 4.2
import Foundation
extension String {
func toDate(withFormat format: String = "yyyy-MM-dd HH:mm:ss")-> Date?{
let dateFormatter = DateFormatter()
dateFormatter.timeZone = TimeZone(identifier: "Asia/Tehran")
dateFormatter.locale = Locale(identifier: "fa-IR")
dateFormatter.calendar = Calendar(identifier: .gregorian)
dateFormatter.dateFormat = format
let date = dateFormatter.date(from: self)
return date
}
}
extension Date {
func toString(withFormat format: String = "EEEE ، d MMMM yyyy") -> String {
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "fa-IR")
dateFormatter.timeZone = TimeZone(identifier: "Asia/Tehran")
dateFormatter.calendar = Calendar(identifier: .persian)
dateFormatter.dateFormat = format
let str = dateFormatter.string(from: self)
return str
}
}
Hallo, Sie haben ein separates T-Format und konvertieren dann nach Belieben
// create dateFormatter with UTC time format
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
dateFormatter.timeZone = NSTimeZone(name: "UTC")
let date = dateFormatter.dateFromString("2015-04-01T11:42:00")
// change to a readable time format and change to local time zone
dateFormatter.dateFormat = "EEE, MMM d, yyyy - h:mm a"
dateFormatter.timeZone = NSTimeZone.localTimeZone()
let timeStamp = dateFormatter.stringFromDate(date!)
Nur dateformate
wenn du dein und dein Date bestanden hast, bekommst du Year,month,day,hour
. Zusatzinformation
func GetOnlyDateMonthYearFromFullDate(currentDateFormate:NSString , conVertFormate:NSString , convertDate:NSString ) -> NSString
{
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = currentDateFormate as String
let formatter = NSDateFormatter()
formatter.dateFormat = Key_DATE_FORMATE as String
let finalDate = formatter.dateFromString(convertDate as String)
formatter.dateFormat = conVertFormate as String
let dateString = formatter.stringFromDate(finalDate!)
return dateString
}
Holen Sie sich Jahr
let Year = self.GetOnlyDateMonthYearFromFullDate("yyyy-MM-dd'T'HH:mm:ssZ", conVertFormate: "YYYY", convertDate: "2016-04-14T10:44:00+0000") as String
Holen Sie sich Monat
let month = self.GetOnlyDateMonthYearFromFullDate("yyyy-MM-dd'T'HH:mm:ssZ", conVertFormate: "MM", convertDate: "2016-04-14T10:44:00+0000") as String
Holen Sie sich Tag
let day = self.GetOnlyDateMonthYearFromFullDate("yyyy-MM-dd'T'HH:mm:ssZ", conVertFormate: "dd", convertDate: "2016-04-14T10:44:00+0000") as String
Holen Sie sich Stunde
let hour = self.GetOnlyDateMonthYearFromFullDate("yyyy-MM-dd'T'HH:mm:ssZ", conVertFormate: "hh", convertDate: "2016-04-14T10:44:00+0000") as String
globale Funktion machen
func convertDateFormat(inputDate: String) -> String {
let olDateFormatter = DateFormatter()
olDateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
let oldDate = olDateFormatter.date(from: inputDate)
let convertDateFormatter = DateFormatter()
convertDateFormatter.dateFormat = "MMM dd yyyy h:mm a"
return convertDateFormatter.string(from: oldDate!)
}
Funktion aufgerufen und Wert darin übergeben
get_OutputStr = convertDateFormat(inputDate: "2019-03-30T05:30:00+0000")
und hier wird ausgegeben
Feb 25 2020 4:51 PM
In swift4,
var Msg_Date_ = "2019-03-30T05:30:00+0000"
let dateFormatterGet = DateFormatter()
dateFormatterGet.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
let dateFormatterPrint = DateFormatter()
dateFormatterPrint.dateFormat = "MMM dd yyyy h:mm a" //"MMM d, h:mm a" for Sep 12, 2:11 PM
let datee = dateFormatterGet.date(from: Msg_Date_)
Msg_Date_ = dateFormatterPrint.string(from: datee ?? Date())
print(Msg_Date_)
// Ausgabe: - 30. März 2019, 17:30 Uhr
Nur Schritt 1> Holen Sie sich den String-Wert von JSON oder dataSource
Schritt 2> Erstellen Sie eine lokale Variable und weisen Sie sie zu.
let startDate = CurrentDashBoard.startdate
Schritt 3> Erstellen Sie eine Instanz von DateFormatter.
let dateFormatter = DateFormatter()
Schritt 4> Rufen Sie das DateFormat von dateFormatter aus auf und geben Sie den Datentyp für das gespeicherte Datum ein.
dateFormatter.dateFormat = "MM-dd-yyyy HH:mm:ss"("may be String formate")
Schritt 5> Weisen Sie dieser zu konvertierenden Variablen die lokale Variable zu.
let dateFromStringstartDate : NSDate = dateFormatter.date(from: startDate)! as NSDate
Schritt 6> Geben Sie Ihr gewünschtes Datum an. Formatieren Sie mit dem folgenden Code.
dateFormatter.dateFormat = "MM/dd/yyyy HH:mm:ss"
Schritt 6> Weisen Sie es Beschriftung / Text zu
cell.lblStartDate.text = String(format: "%@", strstartDate)
Code:
let startDate = CurrentDashBoard.startdate let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MM-dd-yyyy HH:mm:ss" let dateFromStringstartDate :
NSDate = dateFormatter.date(from: startDate)! as NSDate
dateFormatter.dateFormat = "MM/dd/yyyy HH:mm:ss"
let strstartDate = dateFormatter.string(from: dateFromStringstartDate as Date)
Swift 5. Um zu sehen, ob ein Datum verstrichen ist:
let expiryDate = "2020-01-10" // Jan 10 2020
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
if Date() < dateFormatter.date(from: expiryDate) ?? Date() {
print("Not Yet expiryDate")
} else {
print("expiryDate has passed")
}
Ich wurde auch mit diesem Format verrückt.
Siehe die Lösung unten.
Ihr String, der von Ihrem Rücken oder einer anderen Quelle stammt:
let isoDate = "2020-05-06 20:00:00-03"
Identifizieren Sie das Datumsformat
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "yyyy-MM-dd' 'HH:mm:ssZ"
let date = dateFormatter.date(from:isoDate)!
Nachdem Sie das Datum als Date () festgelegt haben, können Sie mit formatDate.string in das gewünschte Format wechseln
let formatDate = DateFormatter()
formatDate.dateFormat = "dd/MM/yyyy HH:mm"
let drawDate = formatDate.string(from: date)
print(drawDate)
Ausgabe:
06/05/2020 20:00
Verwenden Sie dazu eine ISO8601-Analysebibliothek. Es gibt zu viele Möglichkeiten, wie die Zeichenfolge codiert werden könnte. Verlassen Sie sich nicht auf ein bestimmtes Format und nicht darauf, dass der Server immer dasselbe sendet. Die Probleme beginnen mit dem 'Z' am Ende und erstrecken sich über alle Varianten des Standards. Eine Analysebibliothek behandelt alle Fälle und bietet immer eine sichere Konvertierung - während eine feste Formatierungszeichenfolge in Zukunft wahrscheinlich fehlschlägt.
Sie können eine dieser Bibliotheken verwenden. Sie sind auch auf CococaPods erhältlich:
https://github.com/boredzo/iso-8601-date-formatter/
https://github.com/malcommac/SwiftDate
Schauen Sie sich die Implementierungen an. Sie sind beide mehrere hundert Zeilen lang - aus gutem Grund.
Zur Frage: Mit NSDateComponents können Sie die Datumskomponenten aus dem Datum ziehen. Das Beispiel auf der Website deckt genau Ihren Fall ab.
https://developer.apple.com/documentation/foundation/nscalendar/1414841-components?language=objc
Bitte beachten Sie, dass bei der Konvertierung Ihres Datums die Zeitzone berücksichtigt wird. Möglicherweise möchten Sie das Gebietsschema des NSCalendar explizit festlegen.