ios - 如何将日期字符串快速转换为 NSDate 类型

标签 ios swift nsdate

我正在尝试采用 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/

相关文章:

ios - 如何将 NSDate 转换为 unix 时间戳 iphone sdk?

ios - 如何将文本字段中的字符串转换为 NSDate 类型?

ios - 试图将数组移动到表格 View

ios - 自定义 UITableViewCell prepareForReuse 未按预期工作

objective-c - 如何正确切换到横向 View ?

xcode - XCode/Swift 中缺少类

ios - 带有自动布局裁剪 View 的 UIView 的圆角

ios - 如何在 Swift 4 中使 UIDatePicker 更新文本字段和数据库

Swift IBOutlet 集合和保留循环安全

ios - 如何在日期格式中添加 th 和 st