2

コードはありますが、どこにエラーがあるのか​​わかりません。今後のイベントと現在の時刻があります。イベントをタイムスタンプに変換すると、現在のタイムスタンプよりも小さくなります。あなたが私を助けることができるかもしれません。

以下の私のコード:

<?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

現在>今後のタイムスタンプ。(???) ありがとう!

4

2 に答える 2

7

09(前に0が付いている)があるため、この数値は8進数として解釈され、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);
于 2012-09-05T14:41:46.900 に答える
0

不要なゼロを除外します。これでうまくいくはずです。

mktime(23、50、0、9、5、intval(date( "Y")));

于 2012-09-05T14:43:07.123 に答える