Swift如何将字符串转换为NSDate

时间:2016-05-12 05:52:00

标签: ios swift nsdate nsdateformatter

我的数据库中存有date,我想检索它并在我的tableview单元格中很好地显示它。

它从数据库中传入并存储在option1中的格式为BO05151530

前两个字母在程序中有意义,但日期不需要,所以我使用substringFromIndex函数取消它们。

剩下的是05151530,代表MMddhmm

我希望将其显示为MM-dd @ h:mm a

例如12-05 @ 3:45 am

以下是我尝试的内容,但不幸的是ns_date1每次都是nil。

你建议我做什么?

let date1 = option1.substringFromIndex(option1.startIndex.advancedBy(2))

let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MMddhhmm"

let ns_date1 = dateFormatter.dateFromString(date1)

4 个答案:

答案 0 :(得分:2)

试试这个。你不需要分开BO NSDateFormatter可以处理额外的字符串

let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "'BO'MMddHHmm"

let ns_date1 = dateFormatter.dateFromString("BO05151530")

dateFormatter.dateFormat = "'BO' MM-dd @ hh':'mm a"

let string = dateFormatter.stringFromDate(ns_date1!)

答案 1 :(得分:1)

Error
   HH是24小时格式,hh是12小时格式。你需要24个

答案 2 :(得分:0)

查看此应用,这将帮助您了解正确的格式并为您提供代码

https://itunes.apple.com/ae/app/date-format-creator/id965645209?mt=12

enter image description here

  

注意:您需要添加年份才能获得正确的NSDate

答案 3 :(得分:0)

我有这个功能:

class func getTheDateString(stringForInputDate: String, fromFormat inputFormat: String, toFormat outputFormat: String) -> String {
let formatter: NSDateFormatter = NSDateFormatter()
formatter.dateFormat = inputFormat
formatter.timeZone = NSTimeZone.localTimeZone()
let dateForInput: NSDate = formatter.dateFromString(stringForInputDate)!
formatter.dateFormat = outputFormat
return formatter.stringFromDate(dateForInput)

}

并将其用作:

let stringDate : String = "0515930" // "05151530"

    if stringDate.lengthOfBytesUsingEncoding(NSUTF8StringEncoding) < 8 {

        print([ViewControllerForScreen1 .getTheDateString(stringDate, fromFormat: "MMddHmm", toFormat: "MM-dd @ h:mm a")]);

    }else {

        print([ViewControllerForScreen1 .getTheDateString(stringDate, fromFormat: "MMddHHmm", toFormat: "MM-dd @ h:mm a")]);

    }

输出:

  1. [&#34; 05-15 @ 9:30 AM&#34;]

  2. [&#34; 05-15 @ 3:30 PM&#34;]