【发布时间】:2015-01-18 03:11:31
【问题描述】:
我是编程新手,最近开始学习 Swift 语言。为了测试我的学习,我正在尝试制作一个像“闹钟”这样的应用程序。最初我认为我可以将 datepicker.date 分配给通知日期,但很快我意识到 datepicker 没有给出确切的值。我不知道该怎么做,但是在对这个网站进行了大量研究之后,我对如何实施有了一些了解。我开始制作应用程序,但现在我遇到了一个问题。我创建了一个日期选择器来设置警报,并使用 NSDateFormeter 函数从日期中提取字符串。我用该字符串创建了一个数组,并使用 dateFromComponents 来创建一个日期。当我尝试打印它们时,数组给出了正确的数字,但在用它确定日期后,日期就不同了。请帮我解决这个问题。非常感谢您的帮助。
import UIKit
import Foundation
class ViewController: UIViewController {
var myArray = [String]()
@IBOutlet weak var mydatePicker: UIDatePicker!
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func mydatepickerAction(sender: AnyObject) {
var daFormet = NSDateFormatter()
//For ex: 2015:01:17:20:05
daFormet.dateFormat = "YYY:MM:dd:HH:mm"
//This makes datestring from Datepickersdate
var dateString:String = daFormet.stringFromDate(mydatePicker.date)
//Makes an array from the date String
myArray = dateString.componentsSeparatedByString(":")
}
@IBAction func myButton(sender: AnyObject) {
println(myArray)
//Creates a date from components
var newMyDate:NSDate = dateFromComponents(myArray[2] .toInt()!, month: myArray[1] .toInt()!, year: myArray[0] .toInt()!, hour: myArray[3] .toInt()!, minute: myArray[0] .toInt()!, second: 00)
println(newMyDate)
var date = NSDate()
println(date)
}
func dateFromComponents(day:Int, month:Int, year:Int, hour:Int, minute:Int, second:Int) -> NSDate {
var cal = NSCalendar(calendarIdentifier: NSGregorianCalendar)!
cal.timeZone = NSTimeZone.localTimeZone()
var comps = NSDateComponents()
comps.day = day
comps.year = year
comps.second = second
comps.hour = hour
comps.minute = minute
comps.month = month
return cal.dateFromComponents(comps)!
}
}
【问题讨论】:
-
这可能有效,但我想知道为什么我无法从组件中确定正确的日期。
标签: swift datepicker ios8