Swift - 查找即将到来的时间和当前时间之间的差异
Swift - Find Difference Between Upcoming Time and Current Time
我有一个从 API 返回的 date/time,其格式为 RFC 3339。RFC3399 如下所示:"2021-07-24T22:36:39-04:00"
更清楚的是,它可以直接在 swift 中生成,如下所示:
let RFC3339DateFormatter = DateFormatter()
RFC3339DateFormatter.locale = Locale(identifier: "en_US_POSIX")
RFC3339DateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
RFC3339DateFormatter.timeZone = TimeZone(secondsFromGMT: 0)
/* 39 minutes and 57 seconds after the 16th hour of December 19th, 1996 with an offset of -08:00 from UTC (Pacific Standard Time) */
let string = "1996-12-19T16:39:57-08:00"
let date = RFC3339DateFormatter.date(from: string)
我的问题是,如何找到 String
变量中以 RFC 3339 格式存储的时间之间的差异。
例如,我有一个名为 currentTime
的变量 returns 当前 date/time 采用 RFC 3339 格式,并且我的 API 中有数据 returns RFC 3339 格式的未来时间。如何减去每个返回的时间以确定两者之间的差异?
此外,我不关心返回日期。只需要找出时间差即可。
从字符串中获得日期后,您可以使用组件执行类似的操作:
编辑,使用亚历山大的建议:
struct ContentView: View {
@State var timediff = ""
var body: some View {
Text(timediff)
.onAppear {
let RFC3339DateFormatter = DateFormatter()
RFC3339DateFormatter.locale = Locale(identifier: "en_US_POSIX")
RFC3339DateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
RFC3339DateFormatter.timeZone = TimeZone(secondsFromGMT: 0)
let string1 = "1996-12-19T16:39:57-08:00"
let date1 = RFC3339DateFormatter.date(from: string1)
let string2 = "1996-12-19T13:19:27-08:00"
let date2 = RFC3339DateFormatter.date(from: string2)
if let d1 = date1, let d2 = date2 {
let result = Calendar.current.dateComponents([.hour, .minute], from: d1, to: d2)
timediff = result.description
}
}
}
我有一个从 API 返回的 date/time,其格式为 RFC 3339。RFC3399 如下所示:"2021-07-24T22:36:39-04:00"
更清楚的是,它可以直接在 swift 中生成,如下所示:
let RFC3339DateFormatter = DateFormatter()
RFC3339DateFormatter.locale = Locale(identifier: "en_US_POSIX")
RFC3339DateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
RFC3339DateFormatter.timeZone = TimeZone(secondsFromGMT: 0)
/* 39 minutes and 57 seconds after the 16th hour of December 19th, 1996 with an offset of -08:00 from UTC (Pacific Standard Time) */
let string = "1996-12-19T16:39:57-08:00"
let date = RFC3339DateFormatter.date(from: string)
我的问题是,如何找到 String
变量中以 RFC 3339 格式存储的时间之间的差异。
例如,我有一个名为 currentTime
的变量 returns 当前 date/time 采用 RFC 3339 格式,并且我的 API 中有数据 returns RFC 3339 格式的未来时间。如何减去每个返回的时间以确定两者之间的差异?
此外,我不关心返回日期。只需要找出时间差即可。
从字符串中获得日期后,您可以使用组件执行类似的操作:
编辑,使用亚历山大的建议:
struct ContentView: View {
@State var timediff = ""
var body: some View {
Text(timediff)
.onAppear {
let RFC3339DateFormatter = DateFormatter()
RFC3339DateFormatter.locale = Locale(identifier: "en_US_POSIX")
RFC3339DateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
RFC3339DateFormatter.timeZone = TimeZone(secondsFromGMT: 0)
let string1 = "1996-12-19T16:39:57-08:00"
let date1 = RFC3339DateFormatter.date(from: string1)
let string2 = "1996-12-19T13:19:27-08:00"
let date2 = RFC3339DateFormatter.date(from: string2)
if let d1 = date1, let d2 = date2 {
let result = Calendar.current.dateComponents([.hour, .minute], from: d1, to: d2)
timediff = result.description
}
}
}