Laravel -发送一个日期从服务器到客户端在他们的时区


Laravel - Sending a date from the server to the client on their Timezone

我有一个web应用程序与Laravel的工作原理如下:

  1. 用户输入邮箱登录
  2. 一个短期令牌存储在数据库中,以及一个到期日期
  3. 发送电子邮件给用户,包含该代码以及截止日期。

你可能已经发现问题了。当我创建电子邮件时,我发送的是服务器时间。用户可能在完全不同的时区。

如果这是一个我正在展示的网站,我可能能够用JavaScript修复这个问题,但这是我们正在谈论的电子邮件。这意味着更正后的日期/时间必须在服务器上制作。

我怎么能这么做?

坚持使用标准时区,如UTCGMT(或您最喜欢的任何时区),并告诉您的用户他们的令牌将在2014-08-07 13:36:45 UTC过期。

你也可以告诉他们token将持续多少分钟、小时或天,而不是向他们显示完整的日期。读will last 45 minutes.总是比读will last until 2014-08-07 13:36:45 UTC好。这样,无论用户是哪个时区,45分钟将永远持续45分钟。

现在,你只能通过他们的IP地址猜测用户的时区,但这只是一个猜测。他们可能在代理服务器后面,他们的ISP无法向你显示他们的真实位置,他们可能在VPN后面,等等。

当您不想猜测日期时,您希望坚持使用标准时区。