我正在尝试将fajerTime
转换为NSDate
。编译项目时,dateValue
为nil
。知道如何解决这个问题吗?
if prayerCommingFromAdan.id == 0 && prayerCommingFromAdan.ringToneId != 0{
// NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(YourClassName.methodOfReceivedNotification(_:)), name:"NotificationIdentifier", object: nil)
let fajerTime = "\(prayer0.time[0...1]):\(prayer0.time[3...4])" as String
var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MM-dd-yyyy"
dateFormatter.timeZone = NSTimeZone.localTimeZone()
// convert string into date
let dateValue = dateFormatter.dateFromString(fajerTime) as NSDate!
print(dateValue)
var dateComparisionResult:NSComparisonResult = NSDate().compare(dateValue)
if dateComparisionResult == NSComparisonResult.OrderedDescending {
addNotificationAlarm(year, month: month, day: day, hour: prayer0.time[0...1], minutes: prayer0.time[3...4], soundId: prayerCommingFromAdan.ringToneId, notificationBody: "It is al fajr adan")
}
答案 0 :(得分:0)
问题似乎是fajerTime
的格式。看起来fajerTime
是一个时间字符串,例如12:34
,而日期格式化程序配置为接受包含月,日和年的字符串,例如24-07-2016
。
您需要格式化fajerTime
以包含年,月,日以及时间。同时配置日期格式化程序以接受完整的日期和时间。
假设prayer0
是一个数组,您还需要使用joinWithSeparator
将元素组合成一个字符串。
e.g。
let hours = prayer0.time[0...1].joinWithSeparator("")
let minutes = prayer0.time[3...4].joinWithSeparator("")
let fajerTime = "\(month)-\(day)-\(year) \(hours):\(minutes)"
var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MM-dd-yyyy hh:mm"
dateFormatter.timeZone = NSTimeZone.localTimeZone()
// convert string into date
let dateValue = dateFormatter.dateFromString(fajerTime) as NSDate!
答案 1 :(得分:0)
请按照示例( Swift 3 ):
let dateStr = "2016-01-15 20:10:01 +0000"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss Z"
let myDate = dateFormatter.date(from: dateStr)
请记住:
日期格式,例如" yyyy-MM-dd HH:mm:ss Z"必须与日期字符串模式匹配
在您的情况下,您的日期字符串仅包含时间,但是您的日期 formatter仅包含日期
日期格式的有用网站: