【问题标题】:What is the best way to unify backend and frontend dates, times?统一后端和前端日期、时间的最佳方法是什么?
【发布时间】:2026-01-16 23:35:01
【问题描述】:

我正在做一个项目,其中后端 API 构建在 Laravel 上,前端开发在 ReactJS 上。所以我的问题是从后端到前端共享日期和时间的最佳方式是什么?日期和时间非常重要,因为它是一个彩票应用程序,彩票倒计时应该始终为所有用户显示相同的时间,尽管他们的计算机上设置了日期和时间。另外,我正在根据时间进行一些数据过滤。

我想到的解决方案是为当前服务器的日期和时间设置端点,并且每次 React 获取彩票时也会获取服务器上的当前时间。但我认为这不是一个好的解决方案,有人可以提出更好的解决方案吗?

【问题讨论】:

  • 它和 ReactJS 有什么关系?

标签: laravel reactjs api date time


【解决方案1】:

将日期存储为 UTC 时间戳(数字)或 UTC 日期(后端中的日期/日期时间)。在 Javascript 中,这些 UTC 时间戳将被转换为本地时间。或者,如果您确实需要根据登录用户的偏好显示时区,您可以使用类似 moment 的东西。

请记住,您可以使用 date.getTime() 将任何日期从客户端转换为 UTC,这会返回一个时间戳,以防您需要从客户端创建某些内容。

最后,让您的数据库将日期存储为 UTC 是唯一重要的事情!

【讨论】:

    【解决方案2】:

    客户端和服务器都应该使用网络时钟进行自己的时间同步。但是服务器应该忽略客户端上记录的任何时间,因为它们可能是伪造的。

    服务器收到数据时应记录时间。这样,客户端和服务器之间的时间同步就不会出现问题。时间通常以UTC时间记录在数据库中,然后在客户端上偏移。 Laravel 代码中的任何服务器端渲染都需要考虑前端请求数据的时区。

    【讨论】:

    • 感谢您的回答,但我没有完全理解,您建议使用 NTP 吗?也许你可以举个例子? @Mikkel
    • 桌面和服务器都应该已经设置为使用 NTP(假设它们设置正确)。我要说的是,让服务器成为唯一的时间仲裁者。所以任何时间戳都应该分配在服务器上,而不是客户端上。这将节省客户端计算机上时间略有不同的任何挑战
    最近更新 更多