Java 在iOS/Android和Firebase中处理日期的最佳方式是什么?
我正在用android和iOS(swift3)开发两个本机应用程序,我的一些类使用Date对象,但当我将一个Date对象从android保存到Firebase实时数据库时,结构如下:Java 在iOS/Android和Firebase中处理日期的最佳方式是什么?,java,android,ios,firebase,swift3,Java,Android,Ios,Firebase,Swift3,我正在用android和iOS(swift3)开发两个本机应用程序,我的一些类使用Date对象,但当我将一个Date对象从android保存到Firebase实时数据库时,结构如下: 创建日期:{ 日期:3 日期:2 时间:17 会议记录:27 月份:9 秒:43 时间:1507062463000 时区偏移:180 年份:117 } 但这在iOS中并不是一个常见的结构(根据我的搜索结果) 更好的解决方案是什么: 在iOS中创建编码器/解码器以读取和写入此结构 将android中的读写更改为使用i
创建日期:{
日期:3
日期:2
时间:17
会议记录:27
月份:9
秒:43
时间:1507062463000
时区偏移:180
年份:117
}
但这在iOS中并不是一个常见的结构(根据我的搜索结果)
更好的解决方案是什么:
谢谢我建议使用
FIRServerValue.timestamp()
。这将确保在将数据保存到数据库时使用Firebase服务器时间戳,这是最准确的时间,因为它不会被用户篡改,并且在iOS和Android上完全相同
保存的数据是自1970年以来的毫秒数,您可以轻松地将其转换为日期对象
例如(Swift):
编辑:Firebase 4
myRef.setValue(ServerValue.timestamp())
对于iOS,请使用此
为了将当前时间保存到firebase数据库,我使用Unic Epoch对话:
let timestamp = NSDate().timeIntervalSince1970
和用于解码Unix Epoch time to Date()
您应该使用时间戳(自1970年1月1日UTC的Unix纪元以来的秒数): iOS(Swift)
// Get current timestamp
let currentTimestamp = NSDate().timeIntervalSince1970
// Get date from timestamp
let date = NSDate(timeIntervalSince1970: TimeInterval(TimeInterval(yourTimestamp)))
android(Kotlin)(注意,在android中,时间戳以毫秒为单位)
我会推荐您列出的第二个选项,以便将来,如果您还需要其他数据,您的数据会更加灵活。可能会重复“确定”,谢谢回复!!但是您知道这在脱机模式下是否有效吗?是的,它仍然有效,但将使用用户的设备时间戳,直到数据发送到服务器,在服务器上,值将由更准确的Firebase时间戳更新。
let myTimeInterval = TimeInterval(timestamp)
let time = NSDate(timeIntervalSince1970: TimeInterval(myTimeInterval))
// Get current timestamp
let currentTimestamp = NSDate().timeIntervalSince1970
// Get date from timestamp
let date = NSDate(timeIntervalSince1970: TimeInterval(TimeInterval(yourTimestamp)))
// Get current timestamp
val currentTimestamp = System.currentTimeMillis() / 1000 // We want timestamp in seconds
// Get date from timestamp
val date = Date(yourTimestamp * 1000) // Timestamp must be in ms to be converted to Date