我的意思是我有一个生日场地用户进入他们的生日。我只是想确保他们输入合法的日期,如07-03-2001,而不是假日期,如44-88-3333。我已经有代码来确保它是正确的格式。
static func isDateValid(value: String?) -> Bool {
let test = String.trim(value)
if (String.isNilOrEmpty(test)) {
return false
}
let dateRegEx = "^\\d{2}-\\d{2}-\\d{4}$"
let dateTest = NSPredicate(format: "SELF MATCHES %@", dateRegEx)
let result = dateTest.evaluateWithObject(test)
return result
}
userBirthday = String.trim(self.birthdayTextField!.text)
if (!String.isDateValid(userBirthday)) {
showAlertWithTitle("Error".localized(), message: "birthday not valid, please enter in format 07-05-1990".localized() )
return
答案 0 :(得分:0)
您可以使用日期格式化程序来验证日期和格式如果日期无效,则返回nil
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy"
if let date = dateFormatter.dateFromString("25-34-2014")
{
print("true date:\(date)")
}
else
{
print("wrong date")
}
答案 1 :(得分:0)
您可以使用默认的NSDateFormatter()函数,并使用.dateFormat将格式设置为该函数。白天使用“dd”,月份使用“MM”,年份使用“yyyy”。然后在if语句中使用.dateFromString(stringThatContainsTheDate)来测试它是否在其中。
示例:
let date = theTextField.text
let dateFormat = NSDateFormatter()
dateFormat.dateFormat = "dd-MM-yyyy"
if let date = dateFormatr.dateFromString(date)
{
print("This Date Is formatted correctly")
}
答案 2 :(得分:0)
我采用了与其他人使用不同的方法,使用日期选择器,通过minimumDate
和maximumDate
指定限制。在我看来,这为用户提供了一个更清晰的界面,而不是强迫他们输入可能实际上是错误的日期。
import UIKit
class ViewController: UIViewController {
// Connection to textfield in the storyboard that user uses to interact with date picker
@IBOutlet weak var dateField: UITextField!
@IBOutlet weak var pickerView: UIDatePicker!
// This particular max date is one day in the future. You can modify it to suit your needs
var maximumDate: NSDate {
return NSCalendar.currentCalendar()
.dateByAddingUnit(
.Day,
value: 1,
toDate: NSDate(),
options: []
)!
}
override func viewDidLoad() {
super.viewDidLoad()
setupPicker()
}
func setupPicker() {
// This line replaces the standard keyboard with the date picker
dateField.inputView = pickerView
// This line prevents a crash related to using the date picker in place of the keyboard
pickerView.removeFromSuperview()
pickerView.minimumDate = NSDate()
pickerView.maximumDate = maximumDate
}
// Connect an action from the datepicker in your storyboard file to here
@IBAction func dateSelected(sender: UIDatePicker) {
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy HH:mm"
dateField.text = dateFormatter.stringFromDate(sender.date)
dateField.resignFirstResponder()
}
}
它的行动方式。
如果不支持日期,它将以浅灰色而不是黑色显示。
答案 3 :(得分:0)
简单。只需将pickerView.maximumDate设置为您想要的最大日期。
答案 4 :(得分:0)
使用DatePicker可能是最好的方法。但是,由于这不是你提出的要求,这里是正则表达式中的一个选项
let dateRegEx = "^(0[1-9]|[12][0-9]|3[01])[- \\.](0[1-9]|1[012])[- \\.](19|20)\\d\\d$"
年 - 1900年至2099年。