我有下面的代码来计算两个日期之间的天数差异。第一个 View 是我从 UIDatePicker() 中选择一个日期,按一个按钮转到第二个 View 并计算所选日期和今天的日期之间的天数差异并将结果传递给第二个 View 被显示。
我只是无法让计算时差的功能发挥作用。我做错了什么吗? 我很抱歉,因为我刚刚开始快速学习。
在我的代码上
Calendar.current.dateComponents([.day], from: self.GetDate,to: datePicker.date).day!
我在下面收到这个错误
Type 'Any' has no member 'day'
-
第一 View 。
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
}
}
第二个 View
import Foundation
import UIKit
class timeDiffr: UIViewController {
@IBOutlet weak var labeltext: UILabel!
var textDisplay = ""
override func viewDidLoad() {
super.viewDidLoad()
labeltext.text = textDisplay
}
}
最佳答案
你应该注意你的编码约定
- 变量、函数名应该是驼峰式:
GetDate
应该是getDate
,GetDateButton
应该是getDateButton
,CreateDatePicker
应该是createDatePicker
而你的 getDate
是一个字符串,而 Calendar.current.dateComponents([.day], from: self.GetDate,to: datePicker.date).day!
返回一个整数值。这就是您需要解决的问题。
您的 GetDateButton
函数应该是:
@IBAction func GetDateButton(_ sender: Any) {
// Get distance by day (intValue)
let distanceInDay = Calendar.current.dateComponents([.day], from: Date(), to: datePicker.date).day!
}
关于ios - 我如何获得两个日期之间的日差?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58127326/