接受php中的国际日期时间输入


Accepting international datetime input in php

我目前正在为用PHP编写的系统添加对国际化的支持。所有日期现在都存储为UTC,并根据个人用户的本地化偏好进行显示。

但是,当用户输入日期时间(例如指定某个时间窗口)时,他们输入的日期时间将被解释为UTC日期时间,而不是他们的本地日期时间。为了完成国际化,系统需要假设用户输入的日期时间是指他们的本地时间。

如何将日期字符串(即"YYYY-MM-DD HH:MM")转换为unix时间戳以进行正确的本地化?

  • 进一步澄清-数据库中的所有日期=UTC时间戳所有HTML页面都显示用户的本地时间(在其设置中定义)HTML表单的日期默认为当前本地时间PHP必须将该日期时间视为本地时间而非UTCPHP必须将此本地日期时间字符串转换为UTC时间戳

假设您知道用户的时区,他可能在某个地方的首选项中选择了该时区:

$timezone = new DateTimeZone($usersTimezone);
$datetime = new DateTime('2012-01-18 20:00:00', $timezone);
echo $datetime->getTimestamp();

这需要使用DateTime的最新版本的PHP。