【发布时间】:2026-01-21 20:50:02
【问题描述】:
我有一个简单但困难的问题:-)。我正在 Laravel 中构建一个基于 API 的应用程序。 该应用的用户将来自不同的时区。
问题:我该如何正确处理?
到目前为止我做了什么:
- 在 app.php 中我将 'timezone' 设置为 'UTC'
- 我的用户表有一个时区列
- 我使用 camroncade/timezone 包
据我了解上述软件包的文档,我现在应该将从数据库获取的所有日期时间转换为用户的时区,然后返回转换后的时间。此外,当用户向服务器发送日期时间(在他们的时区)时,服务器应将其转换回 UTC 并将其存储在数据库中。
这完全有道理。但是,缺点是我需要找到所有时间从服务器传输到/从服务器的点,并通过时间转换拦截那些点。此外,使用此解决方案,我如何转换 laravel 生成的创建和更新时间戳?真的没有更好的办法吗?
我能想到的解决方案:
一种可能的解决方案是仅在服务器端使用 UTC,并使用客户端逻辑(例如在 iOS 应用程序中)与用户的本地时区进行转换。这意味着从 API 向后只有 UTC 时间戳。
另一种解决方案可能是安装某种中间件来拦截所有 api 通信并进行转换。但是,我不知道该怎么做,而且肯定会产生大量开销。
我该如何解决这个问题?
感谢您的想法, 迈克尔
【问题讨论】: