我有一个代码,但找不到哪里有错误。我有即将举行的活动和当前时间。如果我将事件转换为时间戳,它将小于当前时间戳。也许你能帮我。
我下面的代码:
<?php
date_default_timezone_set('Etc/GMT');
$upcoming = "2012.09.05 23:50";
$current = time();
echo "Upcoming: " . $upcoming . " | Timestamp:" . mktime(23, 50, 0, 09, 05, intval(date("Y")));
echo "<br>Current: " . time();
echo "<br>Current SIM: " . mktime(date("H"), date("i"), date("s"), date("m"), date("d"), date("Y"));
?>
将输出:
Upcoming: 2012.09.05 23:50 | Timestamp:1323129000
Current: 1346855221
Current SIM: 1346855220
其中Current>Upcoming timestamp。(???)谢谢
因为有09(前面有一个0),所以这个数字被解释为八进制数字,所以它被转换为0。用途:mktime(23, 50, 0, 9, 5, intval(date("Y")));
你可以稍微探索一下这个"特性";
var_dump(9); // int 9
var_dump(09); // int 0
var_dump(07); // int 7
var_dump(17); // int 17
var_dump(017); // int 15
编辑;
date('n');
返回不带前导零的月份。date('j');
和date('G');
返回不带前导零的日期和小时。因此,您可以将mktime(date("H"), date("i"), date("s"), date("m"), date("d"), date("Y"));
更改为mktime(date("G"), date("i"), date("s"), date("n"), date("j"), date("Y"));
如果不使用date()
前导零,就无法获得分钟和秒数,因此您可能需要为此找到另一个函数。
编辑:
要将2012.09.05 23:50
转换为时间戳,您可以将.
更改为/
并将其输入到strtotime()
:
$str = '2012.09.05 23:50';
$str = str_replace(".", "/", $str);
$timestamp = strtotime($str);
去掉不必要的零,这样就可以了。
mktime(23,50,0,9,5,intval(日期("Y"));