Swift 如何将字符串转换为 NSDate

Swift how to convert string to NSDate

我有一个 date 存储在我的数据库中,我想检索它并在我的表格视图单元格中很好地显示它。

它来自数据库并存储在 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)

尝试

dateFormatter.dateFormat = "MMddHHmm"

HH is 24 hour format and hh is 12 hour format. you need the 24 one

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

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

NOTE: you need to add year to get a correct NSDate

试试这个。你不需要分开 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!)

我有这个功能:

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. ["05-15 @ 9:30 上午"]

  2. ["05-15 @ 3:30 下午"]