gpt4 book ai didi

ios - 如何在 Swift 中获取 DatePicker 时间到 Calendar 组件并插入到 Label 组件

转载 作者:行者123 更新时间:2023-11-28 23:23:31 25 4
gpt4 key购买 nike

我是这个论坛的新手,但它对我编码有很大帮助。

目前我正在尝试在 Swift (Xcode 11.2.1) 中编写一个 iOS 应用程序作为时间计算器

它应该能够从 DatePicker 组件中选择一个时间并向其添加 8 小时的工作时间。因此,该功能是显示您可以离开工作场所的时间,而不会在您的弹性工作时间中出现负面影响。

应该显示在Label组件中。


import UIKit

class ViewController: UIViewController {

@IBOutlet weak var dateLabel: UILabel!

@IBOutlet weak var datePicker: UIDatePicker!

@IBAction func datePickerChanged(_ sender: Any) {

let dateFormatter = DateFormatter()

dateFormatter.timeStyle = DateFormatter.Style.short //show time in h:mm format

dateFormatter.locale = Locale(identifier: "de-DE") //locale Germany

let endTime = dateFormatter.date // declaring as date

let calendar = Calendar.date(from: endTime) // get time from UIDatePicker

let addHours = Calendar.date(byAdding: .hour, value: 8, to: endTime) // add 8 hours

let endTimeString = dateFormatter.string(from: endTime) //convert time from date to String

dateLabel.text = endTimeString // show calculated time in UILabel
}
}

我遇到了 3 个错误。

在第一个 let calendar 行中说:

Instance member 'date' cannot be used on type 'Calendar'; did you mean to use a value of this type instead?

在下面的 let addHours 行中,我再次遇到同样的错误,这里有什么意义?

当我尝试将时间类型从日期类型转换为字符串时,最后一个错误开始于该行。

Cannot convert value of type '(String) -> Date?' to expected argument type 'Date'

谁能帮帮我?

最佳答案

我想你想要这样的东西:

@IBAction func datePickerChanged(_ sender: UIDatePicker) {

var pickerDate = sender.date

let calendar = Calendar.current
guard let endDate = calendar.date(byAdding: .hour, value: 8, to: pickerDate) else { return }

let dateFormatter = DateFormatter()
dateFormatter.timeStyle = DateFormatter.Style.short //show time in h:mm format
dateFormatter.locale = Locale(identifier: "de-DE") //locale Germany
var endTimeString = dateFormatter.string(from: endDate) //convert time from date to String
dateLabel.text = endTimeString // show calculated time in UILabel

}

首先,您需要从 UIDatePicker 中获取选定的日期。然后,对于日期计算,您需要指定要使用的日历。通常,当前 日历就是您想要的(这是为设备指定的日历)。然后,加上 8 小时并将其转换为字符串。

顺便说一句:您需要记住,当用户选择晚上的日期时,当您添加 8 小时时会出现“白天翻转”。

更新

要添加 8 小时 13 分钟之类的东西,最好使用 DateComponents:

var now = Date()
var calendar = Calendar.current
var addComp = DateComponents(calendar:calendar,
hour:8,
minute:13)

if let then = calendar.date(byAdding: addComp, to: now, wrappingComponents:false) {
print(now)
print(then!)
}

关于ios - 如何在 Swift 中获取 DatePicker 时间到 Calendar 组件并插入到 Label 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59246837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com