PHP Unix时间戳

use*_*349 2 php timestamp date

我有一个代码,但无法找到错误的位置.我有即将到来的活动和当前时间.如果我将我的事件转换为时间戳,那么它将小于当前时间戳.可能你可以帮助我.

我的代码如下:

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


?>
Run Code Online (Sandbox Code Playgroud)

将输出:

Upcoming: 2012.09.05 23:50 | Timestamp:1323129000
Current: 1346855221
Current SIM: 1346855220
Run Code Online (Sandbox Code Playgroud)

当前>即将到来的时间戳.(???) 谢谢!

rae*_*kid 7

因为你有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
Run Code Online (Sandbox Code Playgroud)

编辑;

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);
Run Code Online (Sandbox Code Playgroud)