在Symfony2中处理本地化的DateTime

时间:2015-03-08 22:41:36

标签: php symfony datetime

我正在开发一个基于Symfony2的网站,客户可以在晚上9点到晚上10点要求用户在当天的特定时间发帖。

用户来自世界各地,如果客户在晚上9点要求发帖,则不是基于当地时间,而是基于将为其发布的用户。

我应该向我的用户请求他的时区是什么并存储它然后用它来将他的帖子的php DateTime转换为他的时区,然后检查他是否在晚上9点发布了它?你能告诉我一些代码例子吗?

另外,询问用户他的时区的好方法是什么?

编辑:我想问用户他的时区而不是以编程方式获取它,因为它实际上是他的听众时区(看到他的帖子的人)而不是他的个人时区。

1 个答案:

答案 0 :(得分:0)

最好的方法是使用js时区检测和库jsTimezoneDetect

接下来通过ajax请求时区发送以保存在会话中

下次在会话中使用时区来设置时区到目前为止,您可能希望为此设置枝条扩展,以便您可以轻松地在树枝中使用它。 1.所有日期必须在同一时区,例如UTC

你可以在AppKernel.php中设置它

date_default_timezone_set('UTC');
  1. 显示日期使用类似

    的内容

    $ date-> setTimezone(new \ DateTimeZone($ timezone));

  2. 其中date是\ DateTime对象


    如果您想要询问用户,您可以使用以下方式创建表单: 你创建一个表单,使用http://symfony.com/doc/current/reference/forms/types/timezone.html 领域 并将该时区发送到控制器(AJAX或标准),使用时区设置会话,并通过自定义枝条扩展等显示日期,就像我上面描述的那样处理它。