【问题标题】:iOS Swift NSDateFormatter gives different outputiOS Swift NSDateFormatter 提供不同的输出
【发布时间】:2016-04-05 04:21:47
【问题描述】:

按照 Swift 中的一段代码生成当前时间的时间戳,但有时它会给出错误的输出,例如 2016 年而不是 2015 年。

    let todaysDate: NSDate = NSDate()
    let dateFormatter:NSDateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss.SSS"
    var currentTimeStamp = dateFormatter.stringFromDate(todaysDate)

    print("** Current time stamp: " + currentTimeStamp)

我不明白为什么同一段代码给出不同的输出?

【问题讨论】:

  • ** 当前时间戳:2015-12-31 12:13:18.499 这是我得到的输出
  • 我得到了正确的输出。如果您跟踪哪些输入会给出错误的输出,将会更有帮助。
  • @UmaMadhavi 是的,你是对的。这种情况只会发生一段时间
  • @UmangKothari 我认为这是时区设置的问题。阅读This question。 Albertamg 的回答。
  • @NSNoob 实际上我在 iPhone 4s、iPhone 5s 上运行,并且我还确保该设备的当前日期时间。但面临同样的问题。

标签: ios swift nsdateformatter


【解决方案1】:

按照 BhavukJain 在 cmets 中的建议,通过将 YYYY 更改为 yyyy 为我解决了这个问题。

来自https://8mobile.wordpress.com/2015/05/28/nsdateformatter-nsdate-wrong-year/

y = 年,通常长度指定填充,但对于两个字母,它还指定最大长度。

Y = 年(在基于“一年中的一周”的日历中),这一年的名称用于 ISO 8601 定义的 ISO 年-周日历,但可用于基于非公历的日历系统,其中周日期处理是想要的。可能并不总是与日历年相同。

【讨论】:

  • 但是如果 'yyyy' 导致输出错误,那么它必须每次都给出不同的输出,而不是一段时间。
猜你喜欢
  • 2011-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多