【问题标题】:Why the date are different in single app for different devices?为什么不同设备的单个应用程序中的日期不同?
【发布时间】:2016-09-01 10:50:07
【问题描述】:

我正在开发 iOS 应用程序并从 Web 服务获取日期为整数值。我正在使用以下方法将整数转换为日期字符串。

func formatDate(timeInMiliSeconds: Int) -> String {

    let millse = timeInMiliSeconds

    let date = NSDate(timeIntervalSince1970:Double(millse) / 1000.0)

    let formatter = NSDateFormatter()
    formatter.dateFormat = "dd MMM yyyy E"
    formatter.locale = NSLocale.currentLocale()

    let dateString = formatter.stringFromDate(date)
    return dateString
}

当我在运行 iOS 9.3.4 的 iPhone 6S 上运行应用程序时。它将日期显示为"01 Sep 2016 Thu"。 iPhone 6S 显示预定日期。

当我将此应用程序构建到运行 iOS 9.3.4 的 iPad 2 时,我是如何做到的。它显示日期为"27 Dec 1969 Sat"

有人遇到过这个问题吗?帮助将不胜感激。

【问题讨论】:

  • 如果两个设备上的用户语言不同,那么local对象就不同,因此输出字符串的生成方式也不同。
  • timeInMiliSeconds 的值是多少?您是否仔细检查过两台设备上的内容是否相同?
  • @MartinR 是的,我检查了 timeInMiliSeconds。两个设备中的值相同,但设备中的日期字符串不同。
  • @MartinR 感谢您的评论。终于搞清楚是什么问题了。我正在获取并将值转换为 Int 并且在 64 位设备中,设备能够处理该值,但在 32 位设备中,Int 很小,无法保存该值。所以我将 Int 更新为 uInt。

标签: ios swift nsdate nsdateformatter


【解决方案1】:

你应该替换

formatter.locale = NSLocale.currentLocale()

formatter.timeZone = NSTimeZone.systemTimeZone()

【讨论】:

  • 我已经按照你的说法进行了更新,但结果和以前一样。
  • 您能否检查一下设置您的 iPad2、常规->日期和时间。自动设置 - 开启
  • 如你所说,它在 iPad 上。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-23
  • 1970-01-01
  • 2016-10-29
  • 2016-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多