2014-09-22 127 views
0

在WordPress,我存储日期为Unix时间戳。帐户时区时,UNIX时间戳

所以,今天将被存储为1411344000(2014/22/09)。基本上,我想把今天的日期当作UNIX时间戳,然后我打算与wp_query做一些比较。

我做这样的事情:

date_default_timezone_set('UTC'); 
$date1 = date('Y/m/d'); 
$date2 = strtotime($date1); 

然后我用$ date2的与我保存的时间戳进行比较。这在一天中的大部分时间都可以使用,除非它不考虑我的时区是PST。所以,大约下午4点(太平洋标准时间),我所有的日期比较都变成了关闭。我不知道如何正确解释这个8小时的时差,并且我很困惑,试图围绕它思考。

对此提出建议?

+0

将日期存储为'date'而不是'int' – zerkms 2014-09-22 21:50:27

+0

为什么不将默认时区设置为您的时区而不是UTC? – 2014-09-22 21:59:17

+0

正在存储的时间戳基于时期。基本上,我希望能够将存储的unix时间戳与date()相匹配,然后将date()传递给strtotime()以获取当前时间戳。我已阅读其他职位,提到你需要手动减去时差,但我但我不知道如何做到这一点。 – 2014-09-22 22:11:05

回答

0

UNIX时间戳已经唯一标识的时间 - 它不依赖于时区。所以,如果你在数据库中有UNIX时间戳,只把它比作当前的UNIX时间戳(time())。

根据你想要做的事情,你可以只比较这些整数(例如以秒为单位)或者使用\DateTime或表示来自它们的日期的字符串。

如果要检查当前的日期相匹配的救一个,你应该指定要计算的日期时区。

date_default_timezone_set('UTC'); 
var_dump(date('Y-m-d') === date('Y-m-d', $timestampFromDb)); 
+0

感谢您的回复。我在Wordpress/wp_query中工作,需要比较一个设置的值,该值是一个日期的时间戳记,0小时零秒。所以,2014年9月22日将是1411344000.我真正需要做的是获得今天的时间戳0小时零秒参考时区。然后将其存储在一个变量中。可能? – 2014-09-22 23:32:19

+0

'$日期=新的日期时间( '今日00:00',新DateTimeZone( 'UTC')); $ var = $ date-> getTimestamp();'或'date_default_timezone_set('UTC'); $ var = strtotime('today 00:00');' – 2014-09-22 23:45:01

+0

谢谢。这更接近。但仍然没有按照它应该的方式来解释时区,我不知道为什么。现在是太平洋时间5:14。 5PM之前$ var等于1411344000,这正是我想要的。在PM之后,它变为明天值。我试图将date_default_timezone更改为America/Los_Angeles,但没有奏效。它输出到1411369200。 – 2014-09-23 00:16:07