PHP date("I")用于未来或过去日期的含义是什么?

8

PHP的date("I")函数返回0或1,取决于当前日期是否处于夏令时。但是,我需要此精确函数返回指定日期和时间(过去或未来)的0或1。

有什么想法可以实现这个功能吗?


1
当然,在十月份有一个小时,标准时间和夏令时都使用同一时间,因此这里存在潜在的歧义。这是一个相当小的潜在问题,但确实存在。 - Spudley
1个回答

15

只需像这样传递未来日期的时间戳:

is_daylight_saving = date("I", future_timestamp);

请查看 PHP date() 文档。

****** 编辑:******

为了正确获取夏令时信息,您需要确保默认区域设置为使用夏令时的国家。使用夏令时的国家列表可以在这里找到。

要更改默认时区,请使用date_default_timezone(),如下所示:

date_default_timezone_set('Europe/Rome'); // Italy uses daylight saving
echo date("I", 1366456706); // will return 1

date_default_timezone_set('America/Argentina/Buenos_Aires'); // Argentina doesn't use daylight saving
echo date("I", 1366456706);  // will return 0

1
谢谢你的回复Tomas,但我已经尝试过了,它没有起作用。 我得到了1366456706的时间戳,它转换为2013年4月20日,并且在夏令时期间。 当我通过时间戳转换器将此时间戳转换时,它说GMT +1,这表明它处于夏令时,但date(“I”)仍然返回零。 我尝试过:date(“I”,“1366456706”); 但没有运气。 - Ahmed
future_timestamp是整数,而不是字符串。尝试使用date("I", 1366456706); - Tomas Camin
谢谢Tomas,但仍然返回0。如果我将该时间戳复制并粘贴到一个将时间戳转换为日期和时间的网站上,它会显示GMT+1。也许有其他快速确定时间戳是否具有GMT+1状态的方法吗?谢谢。 - Ahmed
完美。现在完美地运作了。谢谢Tomas。 - Ahmed

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接