2016-04-26 227 views
11

如何将此字符串“2016-04-14T10:44:00 + 0000”转换为NSDate表单并仅保留年,月,日,小时?Swift将字符串转换为日期

在它的中间的T真的抛出了我用workinf时的习惯。

亲切的问候

+0

你只想年,月,日,小时吧? –

+0

可能重复的[从字符串到NSDate在Swift](http://stackoverflow.com/questions/25686284/from-string-to-nsdate-in-swift) – Fogmeister

回答

41
  • 转换的ISO8601刺痛最新

    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)! 
    
  • 取得日期年,月,日,时mponents之日起

    let units : NSCalendarUnit = [.Year, .Month, .Day, .Hour] 
    let calendar = NSCalendar.currentCalendar() 
    let components = calendar.components(units, fromDate: date)! 
    
  • 最后创建一个新的NSDate对象和带分秒

    let finalDate = calendar.dateFromComponents(components) 
    

斯威夫特3:

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) 

还考虑在iOS的10/12的MacOS推出了方便格式化ISO8601DateFormatter

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

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

在“yyyy-MM-dd'T'HH:mm:ssZ”中的Z解决了我不适用于我的问题 – asheyla

+0

我只想要年月和日,但这不适合我 – Sneha

+0

@Sneha如果你不喜欢'不想要小时只是省略'小时' – vadian

3

请尝试以下日期格式。

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

希望它可以帮助..

+0

试过了,并且日期之后返回零。 – asheyla

+1

我测试过了。现在它肯定会工作。 @asheyla –

2

嗨你有独立的T格式,然后转换为你喜欢

// 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

只要你通过你的dateformate和你约会,然后你得到Year,month,day,hourExtra 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 
    } 


获得年度

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


获取月

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


获取日

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


获取小时

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