0

PHPを使用してタイムスタンプを確認しようとしています。ただし、 $date 変数はタイムスタンプ 1382389873 をエコーアウトします。これは UNIX コンバーター epochconverter.com で確認したもので、2013 年 11 月 5 日を意味する場合、Mon, 21 Oct 2013 21:11:13 GMT を示しています。誰でも以下のコードを見ることができます私の間違いを特定しますか?ありがとう。

$today = strtotime(date("d.m.y"));
        $c_date = strtotime($CI->session->userdata('c_date'));
        $early = strtotime(date("d.m.y")."+2 week");
        $date = strtotime("5.11.13");
        echo'<br/>';
        echo 'test'.$date;
        echo'<br/>';
        echo 'collection'.$c_date;
        echo'<br/>';
        echo 'early'.$early;
        echo'<br/>';
        echo 'today '.$today;
        echo'<br/>';
4

3 に答える 3

1

strtotime は、日付を処理する方法が非常に曖昧です。「5.11.13」は、今日の午後 5 時 11 分 13 秒 (24 時間時計では 21 時 11 分 13 秒) と解釈されます。

11 月 5 日を指定する場合は、次のようにします。

$date = strtotime("11/5/13");
echo $date;
echo date("m/d/Y", $date);

出力:

1383609600
11/05/2013
于 2013-10-22T03:02:48.777 に答える
0

私より前に他の人がこれに答えましたが、ここに会話を補足するための私のテストとメモがあります... strtotime() は文字列を時間整数に変換します。date() は、整数を (オプションでフォーマットされた) 文字列に変換します。epochvonverter.com ではなく、いつでもそれを使用できると言うつもりでしたが、なぜそこに行ったのかがわかりました。また、マニュアルには次のように記載されていることに注意してください。

"注: m/d/y または dmy 形式の日付は、さまざまな構成要素間の区切り記号を調べることで明確になります。区切り記号がスラッシュ (/) の場合、アメリカの m/d/y が想定されます。区切り文字がダッシュ (-) またはドット (.) の場合は、ヨーロッパの dmy 形式が想定されます。潜在的なあいまいさを避けるために、可能であれば ISO 8601 (YYYY-MM-DD) 日付または DateTime::createFromFormat() を使用することをお勧めします." - http://www.php.net/manual/en/function.strtotime.php (そのページにはもっと風変わりなものがあります)。

ドットを使用したこの例が dmy を生成していないことは非常に興味深いことですが、hms! それは、私たちが strtoTIME を使用しているからだと思います...ええと.. strtoDATE :)

このことを考慮:

$integer = 1382389873;
var_dump($integer);
echo "<br>";
//int(1382389873) 

$string = date($integer);
var_dump($string);
echo "<br>";
//string(10) "1382389873" 

$formatted=date('d.m.y',$integer);
$laterint=strtotime($formatted."+2 week");
var_dump($laterint);
echo "<br>";
// int(1383682213)

$laterstring=date('d.m.y',$laterint);
var_dump($laterstring);
echo "<br>";
// string(8) "05.11.13" 

そして、ここにジューシーな部分があります:

$date1 = strtotime("5.11.13");
var_dump($date1);
echo "<br>";
$datestring1=date('d.m.y',$date1);
var_dump($datestring1);
    //BAD PHP, BAD!
echo "<br>";

$date2 = strtotime("5.11.2013");
var_dump($date2);
echo "<br>";
$datestring2=date('d.m.y',$date2);
var_dump($datestring2);
echo "<br>";

$date3 = strtotime("5/11/13");
var_dump($date3);
echo "<br>";
$datestring3=date('d.m.y',$date3);
var_dump($datestring3);
echo "<br>";

皆さん、本当に興味深いものです - 皆さん、ありがとうございました! 私にとっての教訓は、常に 4 桁の年を明示することです。

于 2013-10-22T03:51:53.763 に答える
0

いくつかのテストを実行しましたが、年を YYYY 形式 (例: 2013) で入力する必要があるようです:

$date = strtotime("5.11.2013"); // your code
echo $date . "\n";
echo date('d-m-Y', $date);
// timestamp: 1383562800
// converted to date: 05-11-2013

--edit-- 以前のコメントで述べたように、もし$dateが と同じであるはず$earlyなのに、わざわざ手動で再割り当てするのはなぜですか? なぜ使用しないの$earlyですか?

于 2013-10-22T03:02:50.410 に答える