将数据同步到服务器时如何处理本地时区更改?

问题描述 投票:0回答:1

我有一个Android应用。该应用程序执行一些任务,并使用时间戳更新本地DB中这些任务的状态。假设用户记录了一个事件。因此,将使用event_name和time_stamp将条目添加到事件表中。对于时间戳,我以毫秒为单位获取当前时间,将其转换为UTC时间并将其保存在DB中。

val cal = Calendar.getInstance(TimeZone.getTimeZone("GMT"))
val t = cal.time.time

该应用程序正在运行同步服务。此服务基本上维护一个时间戳,该时间戳代表最后一次同步的时间。服务迭代数据库中的所有表,以查找时间戳大于服务维护的时间戳的记录,并将这些记录同步到服务器。响应于同步的服务器以UTC返回其当前时间,以同步客户端应用程序的服务。客户端应用将其时间戳值更新为服务器提供的时间戳值。

但是问题是用户何时更改其当前本地时间/时区。在这种情况下,我在本地获得的UTC时间不合适。因此,无论何时在本地数据库中记录了某些事件,都会以错误的时间戳记记录该事件。因此,当同步服务开始迭代所有表时,它找不到自上次同步以来用户修改的正确记录。

即使用户已在本地更改时间,如何在客户端应用程序上获得正确的UTC时间戳?

每次我去本地数据库中保存记录时,我都无法要求服务器提供当前时间。

我的应用启动后,我应该获得服务器时间并保持时钟服务来跟踪经过的时间吗?

或者我应该使用其他参数代替时间来跟踪已修改的行吗?

我该如何处理此问题?

android timestamp client-server data-synchronization sql-timestamp
1个回答
0
投票

我建议您不要依赖设备的本地时间戳,在很多情况下本地时间可能不正确。使用服务器管理时间戳的更好方法时间服务器可以在所有响应中添加时间戳,并且您可以保存与API端点映射的该时间戳,以尝试使响应链接:

{
"timestamp": 1576566019,
"success": true,
"message": "User list!",
"data": [
    {
   //your response body
   }
 }
© www.soinside.com 2019 - 2024. All rights reserved.