PHP Unix timestamp


PHP Unix timestamp

我有一个代码,但找不到哪里有错误。我有即将举行的活动和当前时间。如果我将事件转换为时间戳,它将小于当前时间戳。也许你能帮我。

我下面的代码:

<?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"));