Swift - 从NSDate中提取小时数,解析字符串问题

时间:2015-01-16 15:29:46

标签: ios swift nsdate nsdateformatter

我在Json中收到一个字符串,首先我要做的是将其转换为NSDate。问题是,我使用的字符串格式都不是有效的。代码如下:

let formatter = NSDateFormatter()
formatter.dateFormat = "yyyy-MM-dd hh:mm:ss"
var output = formatter.dateFromString("2000-01-01T00:00:00.000Z")
let timeString = formatter.stringFromDate(output)

据我所知,如果我想从NSData中检索小时数,我必须再次调用formatter

formatter.dateFormat = "hh"

并在从字符串获取的NSDate上调用它。我对吗? 我的第一个问题是:如何确定正确的日期格式,以便输出不会被评估为零?第二个问题是:我是否正确或有一个更简单的方法或一般方法从以下字符串中检索小时:“2000-01-01T00:00:00.000Z”?我知道我可以通过处理纯粹的字符串而不涉及dateFormatter和NSDate来实现它,但这样的解决方案不会容易受到攻击吗?请告诉我什么是最简单(和最强大)的方法来解决这个问题。

提前致谢

1 个答案:

答案 0 :(得分:3)

首先,你的格式化程序错了......

let formatter = NSDateFormatter()
formatter.dateFormat = "yyyy-MM-dd'T'hh:mm:ss.SSS'Z'"
var output = formatter.dateFromString("2000-01-01T00:00:00.000Z")

之后,您可以使用

获取小时组件
if let date = output {
    var hours = NSCalendar.currentCalendar().component(.HourCalendarUnit, fromDate: date)
}