1

タイムスタンプの比較を行った、作成したスクリプトに本当に腹を立てています。タイムスタンプがまったく異なることがわかります。

  1. 2012-10-02 03:06:21 の場合、タイムスタンプは 1349190381 です。
  2. 2012 年 10 月 2 日 04:00:50 の場合、タイムスタンプは 1349150450 です。

時間が長くても、2番目のタイムスタンプが最初のタイムスタンプよりも低い理由がわかりません。2 つの日付を比較するにはどうすればよいですか?

これらの値は strtotime() 関数で取得しています。

明確化:私は使用しています

$current_timestamp = strtotime(date('Y-m-d H:i:s'));

$till_date_timestamp = strtotime($database_object->till_date);
4

3 に答える 3

2

に頼るなstrtotime!また、PHP のタイムゾーンがデータベースのタイムゾーンと異なることも明らかです。タイムゾーンが同じであることを確認するか、次のように現在/タイムスタンプを取得します(1つのソースからのものになるように):

SELECT UNIX_TIMESTAMP() AS 'Current' UNIX_TIMESTAMP(`datefield`) AS 'Till' FROM `table`
于 2012-10-02T15:22:30.507 に答える
2

あなたはそれを正しくやったと確信していますか?

mysql> select from_unixtime(1349190381), from_unixtime(1349150450);
+---------------------------+---------------------------+
| from_unixtime(1349190381) | from_unixtime(1349150450) |
+---------------------------+---------------------------+
| 2012-10-02 09:06:21       | 2012-10-01 22:00:50       |
+---------------------------+---------------------------+
1 row in set (0.00 sec)

php > echo date('r', 1349190381), "\n", date('r', 1349150450);
Tue, 02 Oct 2012 10:06:21 -0500
Mon, 01 Oct 2012 23:00:50 -0500

strtotime 呼び出しで使用した文字列は何ですか? この関数は入力を誤って解釈する可能性があり、整形式で明確な日付文字列以外は信頼すべきではありません。

于 2012-10-02T15:12:35.930 に答える
1

これは私が得た結果です。それらは、質問で述べたものとは異なります。

コード:

    echo strtotime('2012-10-02 03:06:21'); //outputs: 1349147181
    echo "\n";
    echo strtotime('2012-10-02 04:00:50'); //outputs: 1349150450

編集:

$till_date_timestamp = strtotime($database_object->till_date);それが文字列であることを確認して$database_object->till_dateください。

于 2012-10-02T15:14:03.280 に答える