【问题标题】:Bad converting String to NSDate将字符串转换为 NSDate 错误
【发布时间】:2016-05-13 18:12:13
【问题描述】:

我在将 String 转换为 NSDate 时遇到问题。在我的文本字段中,当用户点击它时,可以使用UIDatePicker 选择日期。 String 作为 TextField 中的日期看起来像这样:“yyyy-mm-dd”现在当我尝试使用这种方法转换日期时,例如 2016-05-13:

func changeStringToNSDate(){

let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-mm-dd"
let from = moreSorts.fromDatePickerTextField.text!
let fromDate = dateFormatter.dateFromString(from)

print(fromDate)

}

当我打印fromDate时,我收到一条信息,fromDate 不是 2016-05-13 而是 2016-01-11 23:58:00 +0000。我不知道为什么在我的TextField 字符串显示 2016-05-13 时我有 2016-01-11

【问题讨论】:

  • 您需要使用正确的日期格式说明符。查看文档。
  • 你能写给我正确的格式吗?
  • 查看文档,看看你是否能弄清楚你做错了什么。这是一项重要的技能。

标签: ios swift nsdate nsdateformatter


【解决方案1】:

根据您提供的信息,很难确定可能出了什么问题。在 Swift 操场上,我得到的是 2016-01-13 而不是 2016-01-11,但是如果我更改日期格式,我可以得到 2016-05-13:

dateFormatter.dateFormat = "yyyy-MM-dd"

大写的MM是key。我会查看此网站以使用日期格式选项:

http://nsdateformatter.com

【讨论】:

  • 当我在更正为 yyyy-MM-dd 后打印 fromDate 时,我比平时少了一天。这意味着在字符串中我有 2016-05-13,但是当我打印 from Date 时,我收到 2016-05-12。有什么建议吗?
  • 我可能会查看有关 NSDate 时区处理的文档。在不了解更多信息的情况下,我无法提供更多有用的建议。尝试和错误以及文档和快速的游乐场可能是您从这里开始的最佳选择。
猜你喜欢
  • 1970-01-01
  • 2011-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多