将此字符串转换为 NSDate

Convert this String to NSDate

基本上我要做的是将 string 转换为 datestring 等于以下内容:

let myDateString = "01-53-36-24-75"

这是它的格式:

Days-Hours-Minutes-Seconds-Milliseconds

所以如果我没有这些日子,我会创建一个 dateFormatter,然后执行以下操作:

let separator = "-"
self.dateFormatter.dateFormat = "HH\(separator)mm\(separator)ss\(separator)SS"

然后我会将 myDateStringself.dateFormatter 转换为 date。但是现在我有几天了,(过去的日子,)我不知道如何将 string - myDateString 转换为 date

dd 会给你一天。

let formatter = NSDateFormatter()

formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS"

将是年、月、日、时、分、秒、毫秒

如果要支持以下日期格式:

Days-Hours-Minutes-Seconds-Milliseconds

那么你需要这样的格式:

dateFormatter.dateFormat = "DDD-HH-mm-ss-SS"

DDD 表示您想要一年中的第几天


要从 dateFormatter 获取 date 对象(我们假设它是一个 NSDateFormatter 实例),那么您将使用 dateFromString 方法。例如:

var myDate: NSDate? = dateFormatter.dateFromString("01-53-36-24-75")

请注意,dateFromString returns 是可选的。因此,如果您的格式无法转换给定的字符串,则返回 nil


现在,我想指出两件事。

首先,日期格式不提供年份值。因此,年份值将是默认年份。

其次,日期字符串01-53-36-24-75似乎有误。具体来说,53 的小时值超出范围(最大应为 23)。

无论如何,如果您运行这段代码:

    var dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "DDD-HH-mm-ss-SS"

    let myDateString1 = "01-53-36-24-75" // Your value
    let myDateString2 = "01-01-02-03-04" // My example value
    println("myDateString1 = \(dateFormatter.dateFromString(myDateString1))")
    println("myDateString2 = \(dateFormatter.dateFromString(myDateString2))")

控制台输出为:

myDateString1 = nil
myDateString2 = Optional(2000-01-01 06:02:03 +0000)

如您所见,您的值已转换为 nil,因为无法转换 53

我的值的年份值转换为 2000,这是默认值,因为它没有在格式或字符串中指定年份。


请参阅此 Date Format Patterns for the symbols used in date formatters. (This link was referred to by the Apple's Date Formatters 页。)