如何检查我在使用 datePickerView 选择后选择的时间是不是在 Swift 的范围内(12:00-14:30)?我不知道如何开始
Posted
技术标签:
【中文标题】如何检查我在使用 datePickerView 选择后选择的时间是不是在 Swift 的范围内(12:00-14:30)?我不知道如何开始【英文标题】:How do I check if the time I picked after selecting with datePickerView is within a range (12:00-14:30) on Swift? I have no idea how to start如何检查我在使用 datePickerView 选择后选择的时间是否在 Swift 的范围内(12:00-14:30)?我不知道如何开始 【发布时间】:2016-05-01 12:30:45 【问题描述】:This is the screenshot of the UI. Once select book, if the time is not within range, there would be an alertView popup.
【问题讨论】:
【参考方案1】:您可以设置 UIDatePicker 视图的 minimum 和 maximum 日期属性。
您可以使用NSDateComponents 创建日期,只需设置小时和分钟组件。
这不会显示弹出窗口,但用户将无法选择无效日期。 (这是推荐的行为)。
要检查输入字段中的日期是否有效,您可以使用NSDate comparison methods 来确定您的最小和最大日期。
【讨论】:
【参考方案2】:您可以按照 Pandafox 回答中的建议,设置您的UIDatePicker
的minimumDate
和maximumDate
。或者回答你的问题
由于 Swift 中没有给出其他两个答案,我将尝试以下方法。
首先,你需要设置你的选择器来监听控制事件
// Add this in viewDidLoad
datePicker.addTarget(self, action: "changedAction", forControlEvents: UIControlEvents.ValueChanged)
然后在动作中,获取值,检查范围内,如果需要显示警报。
func changedAction()
var datePicked = datePicker.date
if datePicked.isGreaterThanDate(endDate) && datePicked.isLessThanDate(startDate)
// show alert
let alertController = UIAlertController(title: "Warning", message: "Date picked out of range", preferredStyle: UIAlertControllerStyle.Alert)
alertController.addAction(UIAlertAction(title: "Dismiss", style: UIAlertActionStyle.Default,handler: nil))
self.presentViewController(alertController, animated: true, completion: nil)
使用扩展方法比较日期,查看更多here
extension NSDate
func isGreaterThanDate(dateToCompare: NSDate) -> Bool
return self.compare(dateToCompare) == NSComparisonResult.OrderedDescending
func isLessThanDate(dateToCompare: NSDate) -> Bool
return self.compare(dateToCompare) == NSComparisonResult.OrderedAscending
【讨论】:
【参考方案3】:你可以这样检查
- (void)viewDidLoad
[super viewDidLoad];
UIDatePicker* picker = [[UIDatePicker alloc]initWithFrame:self.view.bounds];
[self.view addSubview:picker];
picker.datePickerMode = UIDatePickerModeTime;
[picker addTarget:self action:@selector(pickerAction:) forControlEvents:UIControlEventValueChanged];
- (void)pickerAction:(UIDatePicker*)picker
// do something such as check if the picker.data is valid
NSLog(@"pickerAction %@",picker.date);
【讨论】:
【参考方案4】:您可以使用此功能检查所选日期(日期)是否在范围内(开始日期 - 结束日期)
- (BOOL)date:(NSDate*)date isBetweenDate:(NSDate*)beginDate andDate:(NSDate*)endDate
return ([date compare:beginDate] == NSOrderedAscending) && ([date compare:endDate] == NSOrderedDescending)
对于斯威夫特:
extension NSDate
func isBetweenDates(beginDate: NSDate, endDate: NSDate) -> Bool
return self.compare(beginDate) == .OrderedAscending && self.compare(endDate) == .OrderedDescending
【讨论】:
更多信息请见***.com/questions/1072848/… 你知道swift吗? 我发布的链接还包含一个 swift 示例以上是关于如何检查我在使用 datePickerView 选择后选择的时间是不是在 Swift 的范围内(12:00-14:30)?我不知道如何开始的主要内容,如果未能解决你的问题,请参考以下文章