使用 strtotime 并考虑时区

发布于 2025-01-08 10:10:59 字数 530 浏览 0 评论 0原文

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

我经常需要计算出日期的时间戳,例如“本周四”或“本周一”。我目前使用 strtotime("this Wednesday"),它满足了我的要求。

我在东部地区有一台服务器。现在是 2012 年 2 月 24 日星期五凌晨 01:00(凌晨 1:00),纽约。

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

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

我可以使用 strtotime("this Friday") 来代替吗?如果可以,我将如何指定目标时区?

如果没有,您建议采用什么方法来获取特定时区“本周四”的日期。

I have a system running in PHP and am using CodeIgniter (if there is a CI specific answer to this I would be happy as well).

I often need to figure out the timestamp of dates such as "this Thursday" or "this Monday". I currently use strtotime("this Thursday") and it gives me what I ask for.

I have a server in EST. It is 01:00 (1:00am), early morning Friday, Feb 24, 2012 in New York.

I have a user who has specified his timezone to be Pacific time. Right now it is 22:00 (10pm) late evening Thursday Feb 23, 2012 in San Francisco.

I use strtotime("this Thursday"). Since my server is in EST, it returns me the timestamp for March 1, 2012. I would like to take the user's timezone into consideration. For my user, "this Thursday" should return Feb 23, 2012.

Can I use strtotime("this Thursday") for it, and if so, how would I specify the target timezone?

If not, what approach would you suggest to getting the date for "this Thursday" in a specific timezone.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

荭秂 2025-01-15 10:10:59

strtotime 手册直接链接到 date_default_timezone_set。我会把它当作使用它的暗示。

The manual for strtotime links directly to date_default_timezone_set. I would take that as a hint to use that.

帝王念 2025-01-15 10:10:59

我刚刚发现 strtotime 采用 $now 参数。我可以将 $now 参数指定为用户时区中的当前时间,并且 strtotime 返回我需要的内容。

I just figured out that strtotime takes a $now parameter. I can specify the $now param to be the current time in the user's timezone and strtotime returns me what I need.

衣神在巴黎 2025-01-15 10:10:59

这是从 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)),
));
?>

This is taken string from the php site

<?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)),
));
?>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文