【发布时间】:2019-09-27 03:13:19
【问题描述】:
我有下面的代码来计算两个日期之间的天数差异。第一个视图是我从 UIDatePicker() 中选择一个日期,按一个按钮转到第二个视图并计算所选日期和今天日期之间的天数差异,并将结果传递给第二个视图被显示。
我只是无法让计算时差的函数起作用。我做错了什么吗? 我很抱歉,因为我刚刚开始快速学习。
在我的代码上
Calendar.current.dateComponents([.day], from: self.GetDate,to: datePicker.date).day!
我在下面收到此错误
类型 'Any' 没有成员 'day'
-
第一次观看。
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var dateInput: UITextField!
let datePicker = UIDatePicker()
var GetDate = ""
override func viewDidLoad() {
super.viewDidLoad()
CreateDatePicker()
}
// Create Date
func CreateDatePicker() {
datePicker.datePickerMode = .date
dateInput.inputView = datePicker
let toolbar = UIToolbar()
toolbar.sizeToFit()
let doneButton = UIBarButtonItem(barButtonSystemItem: .done, target: nil, action: #selector(doneClicked))
toolbar.setItems([doneButton], animated: true)
dateInput.inputAccessoryView = toolbar
}
@objc func doneClicked() {
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = .medium
dateFormatter.timeStyle = .none
dateInput.text = dateFormatter.string(from: datePicker.date)
self.view.endEditing(true)
}
@IBAction func GetDateButton(_ sender: Any) {
self.GetDate = dateInput.text!
performSegue(withIdentifier: "toTime", sender: self)
Calendar.current.dateComponents([.day], from: self.GetDate,to: datePicker.date).day!
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let vc = segue.destination as! timeDiffr
vc.textDisplay = self.GetDate
}
}
第二个视图
import Foundation
import UIKit
class timeDiffr: UIViewController {
@IBOutlet weak var labeltext: UILabel!
var textDisplay = ""
override func viewDidLoad() {
super.viewDidLoad()
labeltext.text = textDisplay
}
}
【问题讨论】:
-
最好将您的问题集中在一个问题上。请更新您的问题,以便仅与尝试使用
dateComponents时的错误有关。 -
from参数需要一个Date。你正试图给它一个String。 -
@rmaddy 怎么能在没有看到全貌的情况下找出问题?此外,问题仅在于这条线,因为我正在努力寻找解决方案。我注意到我在传递字符串,但我丢失了传递的日期。即使使用 datePicker 也不起作用。
-
Calendar.current.dateComponents([.day], from: self.GetDate,to: datePicker.date).day!,请注意from应该是Date的实例,而不是String@MustafaAljaburi -
@MustafaAljaburi 您可以将该字符串转换为日期并传递,而不是传递字符串。
dateComponents方法需要 2 个日期,因此您需要传递Date而不是字符串