获取所选时区的当地时间 - Swift
Get the local time of chosen timezone - Swift
我正在创建一个社交媒体应用程序。您每 24 小时只能 post 一次,我将它与 firebase 一起使用,因此所有 post' 数据都会进入 firebase 数据库。
创建 post 时,我有变量 Date
,这就是您跟踪自上次 post...
以来是否已过去 24 小时的方式
唯一的问题是用户可以更改他们设备上的时钟,并且 post 可以根据需要多次更改。我需要获取一个日期变量,该变量是我所在时区 (EST) 的本地时间,因此我知道数据是准确的,但我不确定该怎么做...
这是我通常获取当前日期的方式:
let date = Date()
let currentTime = date.timeIntervalSince1970
所以,我只需要让 currentTime
成为当前东部标准时间 (EST)
提前致谢!
从 firebase 服务器获取当前时间戳并与上次 post
的日期进行比较
firebase.database.ServerValue.TIMESTAMP
去这里参考firebase.database
Firestore
firebase.firestore.Timestamp.now()
如果你想确定24小时过去了,你需要比较UTC的日期,而不是EST,UTC是没有任何时区的日期
这里
let date = Date()
let currentTime = date.timeIntervalSince1970
你有 UTC 时间戳
UPD:发布本身的事实应该在服务器上专门检查,而服务器应该在发布之前使用它的 UTC 时间并从数据库中检查最后一次发布的时间。
如果您不信任设备时间,您可以使用 NTP 客户端通过互联网连接获取日期。
有一些用 Swift 编写的实现,例如 TrueTime and Kronos。
两者似乎都默认使用 time.apple.com
.
他们各自的指南(在 README 文件上)似乎非常简单。
使用 TrueTime
的示例:
let client = TrueTimeClient()
client.start()
client.fetchIfNeeded { result in
switch result {
case let .success(referenceTime):
// Current date
let now = referenceTime.now()
client.pause()
case let .failure(error):
print("Error: \(error)")
}
}
使用 Kronos
的示例:
Clock.sync { date, offset in
// Current date
print(date)
}
我正在创建一个社交媒体应用程序。您每 24 小时只能 post 一次,我将它与 firebase 一起使用,因此所有 post' 数据都会进入 firebase 数据库。
创建 post 时,我有变量 Date
,这就是您跟踪自上次 post...
唯一的问题是用户可以更改他们设备上的时钟,并且 post 可以根据需要多次更改。我需要获取一个日期变量,该变量是我所在时区 (EST) 的本地时间,因此我知道数据是准确的,但我不确定该怎么做...
这是我通常获取当前日期的方式:
let date = Date()
let currentTime = date.timeIntervalSince1970
所以,我只需要让 currentTime
成为当前东部标准时间 (EST)
提前致谢!
从 firebase 服务器获取当前时间戳并与上次 post
的日期进行比较firebase.database.ServerValue.TIMESTAMP
去这里参考firebase.database
Firestore
firebase.firestore.Timestamp.now()
如果你想确定24小时过去了,你需要比较UTC的日期,而不是EST,UTC是没有任何时区的日期
这里
let date = Date()
let currentTime = date.timeIntervalSince1970
你有 UTC 时间戳
UPD:发布本身的事实应该在服务器上专门检查,而服务器应该在发布之前使用它的 UTC 时间并从数据库中检查最后一次发布的时间。
如果您不信任设备时间,您可以使用 NTP 客户端通过互联网连接获取日期。
有一些用 Swift 编写的实现,例如 TrueTime and Kronos。
两者似乎都默认使用 time.apple.com
.
他们各自的指南(在 README 文件上)似乎非常简单。
使用 TrueTime
的示例:
let client = TrueTimeClient()
client.start()
client.fetchIfNeeded { result in
switch result {
case let .success(referenceTime):
// Current date
let now = referenceTime.now()
client.pause()
case let .failure(error):
print("Error: \(error)")
}
}
使用 Kronos
的示例:
Clock.sync { date, offset in
// Current date
print(date)
}