【问题标题】:Get Current date exactly same in Different iOS version在不同的 iOS 版本中获取当前日期完全相同
【发布时间】:2018-12-10 10:51:04
【问题描述】:

在 iOS 12.1 中,我使用以下代码获取实际日期 -

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
dateFormatter.timeZone = TimeZone(identifier: "GMT")!
let startDate = dateFormatter.date(from: startDate)
print("the startdate - ",startDate) 
// the startdate -  Optional(2018-12-10 14:58:06 +0000)
let secondsFromGMT = TimeZone.current.secondsFromGMT()
let date = Date().addingTimeInterval(TimeInterval(secondsFromGMT))
print("the date from seconds gmt - ",date) 
// the date from seconds gmt -  2018-12-10 16:10:32 +0000
let seconds = abs(Calendar.current.dateComponents([.second], from: startDate!, to: date).second ?? 0)

但在 iOS 9.1 中使用相同的代码我得到不同的日期,如下所示

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
dateFormatter.timeZone = TimeZone(identifier: "GMT")!
let startDate = dateFormatter.date(from: startDate)
print("the startdate - ",startDate) 
// the startdate -  Optional(2018-12-10 14:58:06 +0000)
let secondsFromGMT = TimeZone.current.secondsFromGMT() 
// secondsFromGMT is 0
let date = Date().addingTimeInterval(TimeInterval(secondsFromGMT))
print("the date from seconds gmt - ",date) 
// the date from seconds gmt -  2018-12-10 10:44:38 +0000
let seconds = abs(Calendar.current.dateComponents([.second], from: startDate!, to: date).second ?? 0)

因此,如果您检查打印语句,我没有得到实际的当前日期。 那么如何在不使用任何 Web 服务的情况下在两个版本中实现相同的日期呢?

【问题讨论】:

  • “实际日期”——现在的日期——是Date()。结束。时区等无关紧要。
  • @matt Date() 在 12.1 和 9.1 中有所不同,您可以自行检查。
  • 不,没有什么不同。就是现在。总是。

标签: swift date ios12 ios9.1


【解决方案1】:

“'Date()' 在 12.1 和 9.1 中不同”是什么意思?你的意思是它的显示方式不同?就像您从 2 个不同操作系统版本中的日期格式化程序获得不同的输出一样?

您发布的代码使用的是在let date = Date().addingTimeInterval(TimeInterval(secondsFromGMT)) 行中计算的即时日期。每次运行时,该代码都会生成稍微不同的日期。

表达式Date() 为您提供代码运行时的当前日期。 5 秒后运行它,5 秒后你会得到一个日期。花点时间在运行不同版本操作系统的模拟器上安装代码,因为时间已经过去,它会给出不同的结果。

您是否正在尝试编写输入日期字符串、将其转换为 Date 对象、然后为其添加偏移量的代码?你为什么用secondsFromGMT做数学?这不是处理时区转换的正确方法。

说明您想要做什么,我们可以帮助您编写执行此操作的代码。在我看来,您对如何在 Cocoa 中进行日期数学有一个根本性的误解。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-17
    • 2015-06-15
    • 2015-03-30
    • 2011-12-14
    • 2017-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多