2016-04-26 15 views
11

Wie kann ich diese Zeichenfolge "2016-04-14T10: 44: 00 + 0000" in ein NSDate-Formular konvertieren und nur das Jahr, den Monat, den Tag, die Stunde beibehalten?Swift konvertiert String nach Datum

Das T in der Mitte wirft wirklich ab, was ich gewohnt bin, wenn ich mit Daten arbeite.

Mit freundlichen Grüßen

+0

Sie wollen einfach nur Jahr, Monat, Tag, Stunde oder? –

+0

Mögliches Duplikat von [Von String zu NSDate in Swift] (http://stackoverflow.com/questions/25686284/from-string-to-nsdate-in-swift) – Fogmeister

Antwort

41
  • umrechnen ISO8601 Stachel bisher

    let isoDate = "2016-04-14T10:44:00+0000" 
    
    let dateFormatter = NSDateFormatter() 
    dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ" 
    dateFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX") 
    let date = dateFormatter.dateFromString(isoDate)! 
    
  • Holen Sie sich das Datum co mponents für Jahr, Monat, Tag und Stunde ab dem Datum

    let units : NSCalendarUnit = [.Year, .Month, .Day, .Hour] 
    let calendar = NSCalendar.currentCalendar() 
    let components = calendar.components(units, fromDate: date)! 
    
  • endlich eine neue NSDate Objekt und Streife Minuten und Sekunden

    let finalDate = calendar.dateFromComponents(components) 
    

Swift 3 erstellen:

let isoDate = "2016-04-14T10:44:00+0000" 

let dateFormatter = DateFormatter() 
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ" 
dateFormatter.locale = Locale(identifier: "en_US_POSIX") // set locale to reliable US_POSIX 
let date = dateFormatter.date(from:isoDate)! 
let calendar = Calendar.current 
let components = calendar.dateComponents([.year, .month, .day, .hour], from: date) 
let finalDate = calendar.date(from:components) 

Beachten Sie auch die Bequemlichkeit Formatierer ISO8601DateFormatter in iOS eingeführt 10/macOS 12:

let isoDate = "2016-04-14T10:44:00+0000" 

let dateFormatter = ISO8601DateFormatter() 
let date = dateFormatter.date(from:isoDate)! 
+1

das Z in "JJJJ-MM-TT'T'HH: mm: ssZ" gelöst, was für mich nicht funktionierte – asheyla

+0

Ich will nur Jahr Monat und Tag, aber das funktioniert nicht für mich – Sneha

+0

@Sneha Wenn Sie don will nicht die Stunde einfach weglassen '.hour' – vadian

3

das folgende Datum Format Versuchen.

let dateFormatter = NSDateFormatter() 
dateFormatter.dateFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ssZZZ" 
let date = dateFormatter. dateFromString (strDate) 

Hoffe, es hilft ..

+0

Versuchte es, und Datum gibt Null danach zurück. – asheyla

+1

Ich habe getestet. Jetzt wird es sicher funktionieren. @asheyla –

2

Hallo Sie trennen T Format haben und dann konvertieren, wie Sie mögen

// 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!) 
1

Sie Ihre Ihre dateformate und Ihr Datum vorbei Sie dann Year,month,day,hour erhalten. Extra info

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 
    } 


Erhalten Jahr

let Year = self.GetOnlyDateMonthYearFromFullDate("yyyy-MM-dd'T'HH:mm:ssZ", conVertFormate: "YYYY", convertDate: "2016-04-14T10:44:00+0000") as String 


Monats Gewinnen Sie

let month = self.GetOnlyDateMonthYearFromFullDate("yyyy-MM-dd'T'HH:mm:ssZ", conVertFormate: "MM", convertDate: "2016-04-14T10:44:00+0000") as String 


Erhalten Tag

let day = self.GetOnlyDateMonthYearFromFullDate("yyyy-MM-dd'T'HH:mm:ssZ", conVertFormate: "dd", convertDate: "2016-04-14T10:44:00+0000") as String 


Get Hour

let hour = self.GetOnlyDateMonthYearFromFullDate("yyyy-MM-dd'T'HH:mm:ssZ", conVertFormate: "hh", convertDate: "2016-04-14T10:44:00+0000") as String 
Verwandte Themen