ios - 如何将日期字符串快速转换为 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
但我认为这不是正确的做法。
您可以提供的任何帮助和见解将不胜感激!谢谢
解决方案
如果您让用户从UIDatePicker
. 这有很多优点:
- 用户不必输入三个文本字段
date
您可以通过属性获取所选日期。你不需要所有这些格式化程序和东西- 您可以设置用户可以通过该
maximumDate
属性选择的最大日期。这样您就不必手动检查它是否在将来。就设置maximumDate
到现在。 - 日期选择器将根据用户的语言环境使用不同的格式。你根本不需要担心它。
只要记住设置datePickerMode
为.date
!
至于转换为NSDate
,您可以通过以下表达式轻松完成此操作:
datePicker.date as NSDate
如果您坚持使用三个文本字段,您可以这样做:
dateFormatter.date(from: dateString) as NSDate? // note that this produces an optional
推荐阅读
- bash - 如何在bash脚本中的特定单词后添加逗号?
- html - align-items-center 不适用于 Ionic4
- f# - Giraffe 和 AspNetCore.Identity:打开二进制文件时出错
- azure - 使用 Azure 媒体服务通过 shaka 打包程序交付 DRM 许可证?
- java - 我的 java 代码中带有 httpconnection 的奇怪错误
- javascript - 从 GET 的下拉菜单中加载值
- r - 安装 R 包时获取依赖项不可用
- cakephp - allowEmptyString() - 表示只允许空字符串或填充字符串和空字符串
- javascript - 如何在猫鼬中为内部填充字段分组
- linux - 失败:dbName.collectionName:从 collectionName.bson 恢复时出错:读取 bson 输入:意外 EOF