我正在尝试采用 dd/mm/yyyy 格式的字符串并将其转换为 NSDate,以便我可以存储生日。日、月和年被验证为真实日期(也不是 future 日期),因此我知道它们是正确的。它们由用户作为文本字段输入,我想我可以将 dateString
设为我想要的任何有用的格式。
let day = dayTextField.text
let month = monthTextField.text
let year = yearTextField.text
let dateString = "\(day)/\(month)/\(year)"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd/MM/yyyy"
let birthdate: NSDate = dateFormatter.date(from: dateString) as NSDate
我的问题出在最后一行,当我尝试将日期字符串转换为 NSDate 时,出现以下错误:
'Date?' is not convertible to 'NSDate'; did you mean to use 'as!' to force downcast?
我可以在“(from: dateString
)”之后强制转换,但我认为这不是正确的做法。
如果您能提供任何帮助和见解,我们将不胜感激!谢谢
最佳答案
如果您让用户从 UIDatePicker
中选择日期,那么您和用户都会更轻松。这有很多优点:
- 用户不必在三个文本字段中键入
- 您可以通过
date
属性获取选定的日期。你不需要所有这些格式化程序和东西 - 您可以设置用户可以通过
maximumDate
属性选择的最大日期。这样您就不必手动检查它是否在将来。只需将maximumDate
设置为现在。 - 日期选择器将根据用户的语言环境使用不同的格式。您根本不需要担心。
请记住将 datePickerMode
设置为 .date
!
至于到NSDate
的转换,你可以很容易地通过这个表达式来完成:
datePicker.date as NSDate
如果你坚持使用三个文本字段,你可以这样做:
dateFormatter.date(from: dateString) as NSDate? // note that this produces an optional
关于ios - 如何将日期字符串快速转换为 NSDate 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52306483/