使用strtotime并考虑时区

时间:2012-02-23 13:48:40

标签: php timezone

我有一个用PHP运行的系统并且正在使用CodeIgniter(如果有一个CI特定的答案,我会很高兴。)

我经常需要弄清楚日期的时间戳,例如"本周四"或者"本周一"。我目前使用strtotime("this Thursday"),它给了我要求的内容。

我在EST有一台服务器。 2012年2月24日星期五,凌晨1点00分(凌晨1点),凌晨1点在纽约举行。

我有一位用户指定他的时区为太平洋时间。现在是2012年2月23日星期四晚上22:00(晚上10点)在旧金山。

我使用strtotime("this Thursday")。由于我的服务器位于EST,它会返回2012年3月1日的时间戳。我想考虑用户的时区。对于我的用户,"本周四"应该返回2012年2月23日。

我可以使用strtotime("this Thursday"),如果是,我该如何指定目标时区?

如果没有,你会建议采用什么方法来获得#34;本周四和#34;在特定的时区。

3 个答案:

答案 0 :(得分:1)

manual for strtotime直接链接到date_default_timezone_set。我会把它作为使用它的提示。

答案 1 :(得分:1)

我只是发现strtotime需要$ now参数。我可以指定$ now param为用户时区的当前时间,strtotime返回我需要的内容。

答案 2 :(得分:0)

这是从php网站

获取的字符串
<?php
date_default_timezone_set('Asia/Shanghai');

$first_day_of_month = date('Y-m',time()) . '-01 00:00:01';
$t = strtotime($first_day_of_month);
print_r(array(
            date('Y-m',$t),
            date('Y-m',strtotime('- 1 month',$t)),
            date('Y-m',strtotime('- 2 month',$t)),
));
?>