Ios 我怎样才能知道时间是否已经过去?敏捷的
我正在开发一个应用程序,用户应该能够选择一个时间段。i、 e上午8:00-8:30或下午2:00-2:30。但我希望用户仅根据当前时间选择时间段。i、 如果是晚上8点,他应该到晚上9点才能选择吃角子老虎机。我至少需要一个小时的休息时间。 现在,我已经硬编码了时隙,如下所示,并显示在选择器视图中Ios 我怎样才能知道时间是否已经过去?敏捷的,ios,swift,nsdate,Ios,Swift,Nsdate,我正在开发一个应用程序,用户应该能够选择一个时间段。i、 e上午8:00-8:30或下午2:00-2:30。但我希望用户仅根据当前时间选择时间段。i、 如果是晚上8点,他应该到晚上9点才能选择吃角子老虎机。我至少需要一个小时的休息时间。 现在,我已经硬编码了时隙,如下所示,并显示在选择器视图中 var items = ["8.00 AM - 8.30 AM","8.30 AM - 9.00 AM","9.00 AM - 9.30 AM","9.30 AM - 10.00 AM","10.00 A
var items = ["8.00 AM - 8.30 AM","8.30 AM - 9.00 AM","9.00 AM - 9.30 AM","9.30 AM - 10.00 AM","10.00 AM - 10.30 AM","10.30 AM - 11.00 AM","11.00 AM - 11.30 AM","11.30 AM - 12.00 PM","12.00 PM - 12.30 PM","12.30 PM - 1.00 PM","1.00 PM - 1.30 PM","1.30 PM - 2.00 PM","2.00 PM - 2.30 PM","2.30 PM- 3.00 PM","3.00 PM - 3.30 PM","3.30 PM - 4.00 PM","4.00 PM - 4.30 PM","4.30 PM - 5.00 PM","5.00 PM - 5.30 PM","5.30 PM - 6.00 PM","6.00 PM - 6.30 PM","6.30 PM - 7.00 PM","7.00 PM - 7.30 PM","7.30 PM - 8.00 PM","8.00 PM - 8.30 PM","8.30 PM - 9.00 PM"]
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if pickerView.tag == 1 {
return dates[row] as? String
}else{
return items[row]
}
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if pickerView.tag == 1 {
dateTextField.text = dates[row] as? String
}else if pickerView.tag == 2{
timeTextField.text = items[row]
}
当用户选择时间时,如果时间已经过去,我想发出警报,或者我应该禁用已经过去的时间段。任何人都可以帮我实现这一点。首先,您想创建一个名为Calendar的swift文件或任何您喜欢的文件,并添加以下代码:
import UIKit
extension NSDate {
func hour() -> Int
{
//Get Hour
let calendar = Calendar.current
let components = calendar.components(.hour, from: self as Date)
let hour = components.hour
//Return Hour
return hour!
}
func minute() -> Int
{
//Get Minute
let calendar = Calendar.current
let components = calendar.components(.minute, from: self as Date)
let minute = components.minute
//Return Minute
return minute!
}
func toShortTimeString() -> String
{
//Get Short Time String
let formatter = DateFormatter()
formatter.timeStyle = .short
let timeString = formatter.string(from: self as Date)
//Return Short Time String
return timeString
}
}
之后,您可以在viewDidLoad()中的ViewController上编写类似的内容以获取时间我在故事板上添加了一个标签,以便查看当前时间。:
let currentDate = NSDate()
timeLabel.text = currentDate.hour().description
以上代码来自本帖:
上面我用了Swift 3。另一根柱子上写着“斯威夫特”
---编辑---
以下是pickerView的代码:
import UIKit
class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {
@IBOutlet weak var timeLabel: UILabel!
@IBOutlet weak var pickerView: UIPickerView!
var array = [String]()
override func viewDidLoad() {
super.viewDidLoad()
let currentDate = NSDate()
self.pickerView.dataSource = self;
self.pickerView.delegate = self;
var nextHour = 0
var nextMinute = 0
var forLoop = 0
timeLabel.text = "\(currentDate.hour().description) : \(currentDate.minute())"
if currentDate.minute() > 30 {
nextHour = currentDate.hour()+2
nextMinute = 30
}else{
nextHour = currentDate.hour()+1
nextMinute = 0
}
if nextMinute == 0 {
forLoop = (21 - nextHour-1)
for index in 0 ... forLoop{
array.append("\(nextHour+index):00")
array.append("\(nextHour+index):30")
}
array.append("21:00")
}else{
forLoop = (21 - nextHour - 1)
for index in 0 ... forLoop{
array.append("\(nextHour+index):00")
array.append("\(nextHour+index):30")
}
array.append("21:00")
}
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return array.count
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return array[row]
}
}
它计算并在数组中加载从当前时间到21:00的剩余时间,并将其加载到pickerView
希望我能帮忙。祝您的项目好运:)如果您需要获取当前时间,请发布帮助,谢谢您的回复。所以你是说,我应该根据当前时间生成一个数组,而不是硬编码,然后检查时间是否已经过去?我理解对了吗?我想要一个30分钟的间隔时间,比如上午8:00-8:30。我怎么知道?我想要从早上8点开始到晚上9点30分。@Pruthviharan有几种方法可以做到这一点。这是我读到你的问题时的第一个想法。如果你想聊天,我们可以讨论这个问题,因为它太多了。。。。我的名声不好,我不能创建聊天室,但如果你愿意,你可以。