首页 > 解决方案 > 如何将日期字符串快速转换为 NSDate 类型

问题描述

我正在尝试采用dd/mm/yyyy格式的字符串并将其转换为 NSDate,以便我可以存储生日。日期、月份和年份被验证为真实日期(也不是将来的日期),所以我知道它们是正确的。它们由用户作为文本字段输入,我想我可以制作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?

我可以在“(来自:)”之后强制转换,dateString但我认为这不是正确的做法。

您可以提供的任何帮助和见解将不胜感激!谢谢

标签: iosswiftnsdate

解决方案


如果您让用户从UIDatePicker. 这有很多优点:

  • 用户不必输入三个文本字段
  • date您可以通过属性获取所选日期。你不需要所有这些格式化程序和东西
  • 您可以设置用户可以通过该maximumDate属性选择的最大日期。这样您就不必手动检查它是否在将来。就设置maximumDate到现在。
  • 日期选择器将根据用户的语言环境使用不同的格式。你根本不需要担心它。

只要记住设置datePickerMode.date

至于转换为NSDate,您可以通过以下表达式轻松完成此操作:

datePicker.date as NSDate

如果您坚持使用三个文本字段,您可以这样做:

dateFormatter.date(from: dateString) as NSDate? // note that this produces an optional

推荐阅读