0

首先,对不起,如果我的问题对你来说太简单了,我只是一个初学者 :-) 我创建了一个地理定位应用程序,分为两部分:一个 Android 地理定位地图,人们用来在 OpenStreetMaps 上的手机上添加标记底图和浏览器可访问的应用程序,我可以用它来分析这些标记(我可以做一些简单的统计,例如显示时间 A 和 B 之间的标记 A 和 B 的数量,例如,在 9 月 1 日和 9 月 4 日之间,或某天早上 8 点和晚上 8 点)。此信息由我的服务器使用 Postgresql 数据库管理。服务器在伦敦,但添加标记的人可以在地球上的任何地方。

好的,所以我的问题是:当他们在地图上添加标记时,服务器如何知道正确的时间戳,以便为每个用户准确记录时间,从而让他进行准确的统计?

由于我们不会有这么多用户,与我合作的开发人员说最好在 Postgresql 中指定用户的时区,但他只允许我在服务器时间中添加 +2、-2 等,这没有考虑夏令时等,这意味着我需要在 DST 当天手动更改这个时差。开发人员告诉我,如果用户手机上设置的时间不正确,这样会更安全。

但是,一位开发者朋友告诉我,这不是正确的方法,应该通过每个用户的电话发送时间,可能使用带有类似 moment.js 的 javascript。

我很困惑,因为我还阅读了 Postgresql 文档,可以在那里指定时区信息,包括夏令时的时区。我不具备自己执行此任务的技术技能,因此我将不胜感激我可以为我的开发人员提供的任何指导,因为这对于我正在尝试构建的应用程序非常重要。

感谢您对我的案例中遵循的标准程序的任何帮助,非常感谢大家!

此致,

菲利普

<code>android<\code>
<code>mysql<\code>
<code>javascript<\code>
4

1 回答 1

1

设备(如果是手机)可能会有所不同,如果选择自己的时区并提交,即使彼此相邻并且如果它们已经扎根,也可能会有很大差异。

最好的方法是在数据库端。在表中创建一个类型为 TIMESTAMP 的字段,例如“CreationTime”,然后在定义该表时,还将默认值设置为 CURRENT_TIMESTAMP。

所以这为您完成了所有工作,您甚至不必编写任何代码。每次插入新记录时,服务器都会抓取时间并将其粘贴在其中(在创建时,而不是在以后的编辑时)。所有时间都相对于已知/可控的来源,你很高兴。

编辑:Gah,刚刚看到“Postgresql”,上面的语法是针对 MySQL 的。类似的概念。

于 2013-08-06T18:20:35.250 回答