ios - 我如何获得两个日期之间的日差?

标签 ios swift

我有下面的代码来计算两个日期之间的天数差异。第一个 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应该是getDateGetDateButton应该是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/

相关文章:

ios - 如何将一个 Storyboard用于具有自动布局(ios 6 + ios 7)的 4"and 3.5"iphone 屏幕?

ios - 使用两种不同的字体动态设置 Storyboard生成的 UILabel 的属性字符串(Swift)

ios - 如何在 Swift 中跳过 for 循环中的索引

ios - CorePlot - 在散点图中摆动的注释

ios - 键盘始终显示在 ios 中

ios - 在方法中包装来自 AFNetworking 的成功失败 block

iOS - 由于未捕获的异常 'NSInvalidArgumentException' 而终止应用程序

json - 在 Swift 中解析 JSON 数组

ios - 希望单元格中的标签有 2 行。如何附加第二行?

ios - 如何在 UITableViewCell 上使用 CAGradientLayers