确定记录顺序的日期时间格式
Datetime format to determine records order
我们需要通过 rest 在长轮询中从各种类型的数据库中发送一些对象。发送数据,每条记录都包含时间戳。当客户端从服务器接收到新数据时,他应该创建另一个轮询请求,并将记录的时间戳作为参数,这有助于指定以下数据记录。
我考虑了纪元 unix 时间并将此值存储在数据库中的每条记录中以进行过滤,并且此值将随每个轮询请求一起发送。
您如何看待这个解决方案?这种用法可以吗,还是我应该担心什么?谢谢。
编辑:
我忘记通知这些数据将由不同时区的客户添加。这也是我考虑使用unix时间的另一个原因。
任何存储时间戳的格式都可以,只要用户能够明确地解释它即可。 API 中的时间戳格式没有理由与数据库中的相同。 API 的想法是将模型与数据库解耦。
就我个人而言,我会从 ISO 8601 基本和扩展符号 中选择一种格式。示例:2008-09-15T15:53:00。在几乎所有的编程语言中,都有处理这种格式的方法(转换为 unix 时间戳或内部 date/time 类)。对于 java,您将使用 java.time.LocalDateTime#parse
Unix 时间戳有一些问题(它们可能对您来说是问题,也可能不是问题)
- 无法表示 1970 年 1 月 1 日之前的日期
- 无法表示 2038 年 1 月 19 日之后的日期
- 人类无法阅读
- 不包含时区(时间戳本身没有时区的概念,但将时区与时间戳一起发送给客户端可能会有用。服务器可能始终将值规范化为 UTC)
我们需要通过 rest 在长轮询中从各种类型的数据库中发送一些对象。发送数据,每条记录都包含时间戳。当客户端从服务器接收到新数据时,他应该创建另一个轮询请求,并将记录的时间戳作为参数,这有助于指定以下数据记录。
我考虑了纪元 unix 时间并将此值存储在数据库中的每条记录中以进行过滤,并且此值将随每个轮询请求一起发送。
您如何看待这个解决方案?这种用法可以吗,还是我应该担心什么?谢谢。
编辑:
我忘记通知这些数据将由不同时区的客户添加。这也是我考虑使用unix时间的另一个原因。
任何存储时间戳的格式都可以,只要用户能够明确地解释它即可。 API 中的时间戳格式没有理由与数据库中的相同。 API 的想法是将模型与数据库解耦。
就我个人而言,我会从 ISO 8601 基本和扩展符号 中选择一种格式。示例:2008-09-15T15:53:00。在几乎所有的编程语言中,都有处理这种格式的方法(转换为 unix 时间戳或内部 date/time 类)。对于 java,您将使用 java.time.LocalDateTime#parse
Unix 时间戳有一些问题(它们可能对您来说是问题,也可能不是问题)
- 无法表示 1970 年 1 月 1 日之前的日期
- 无法表示 2038 年 1 月 19 日之后的日期
- 人类无法阅读
- 不包含时区(时间戳本身没有时区的概念,但将时区与时间戳一起发送给客户端可能会有用。服务器可能始终将值规范化为 UTC)