-1

現在のタイムスタンプを使用し、cron 機能のために次の分をデータベースに割り当てたいと考えています。つまり、7 時間 30 分 20 秒なら、7 時間 31 分 0 秒から開始したいということです。私はいくつかの奇妙な問題に直面しています。

私が行った場合-

$current_time_stamp = time() + 1*60;

次の分から正確に開始されるわけではありません。でももしそうなら-

$current_time_stamp = number_format(time()/60);
$current_time_stamp = $current_time_stamp*60 + 1*60;

1970 年に変な時間が表示されます。エラーを指摘してください。

4

4 に答える 4

0

mktimeこれには time() 関数を使用できます。strtotime

$nextmin = ceil(time()/60)*60;

ただし、strtotimeこのように使用できます

$nextmin=floor(strtotime("+1 minute"));

この関数number_format()は、フォーマットする数値と小数点以下の桁数の少なくとも 2 つのパラメーターを必要とします。小数点以下の桁数を入れる必要があります。

于 2013-11-08T14:17:39.970 に答える
0
$current_time_stamp = time() + 1*60;

これは機能します。もちろん、cronジョブを開始するときに新しい時間を設定します-最後ではありません。正確に1分を取得するには、cronの期間を差し引く必要があるためです。

を使用しない方が良いでしょうがtime()、データベースにあった古いタイムスタンプです。

于 2013-11-08T14:17:54.643 に答える
0

これを試して:

$next_minute = mktime( date( 'H' ), date( 'i' ) + 1, 0 );

これは実際にはこれのショートカットです:

$next_minute = mktime( date( 'H' ), date( 'i' ) + 1, 0, date( 'd' ), date( 'm' ), date( 'Y' ) );

それが行うことは、提供された引数から新しいタイムスタンプを構築することです。

次の引数を指定するのと同じくらい簡単です。

  1. 現在の時間
  2. 現在の分プラス 1
  3. ゼロ秒
  4. 現在の日付
  5. 今月
  6. 今年

mktime()date( )を参照してください

参考までに、number_format()は、タイムスタンプを PHP が計算に使用できない文字列 (人間が読める形式) に変換するため、機能しません。

于 2013-11-08T14:27:27.077 に答える
0
$time = time();
$time = strtotime(date(sprintf('Y-m-d H:%02d:00', floor(date('i', $time) / 5) * 5), $time)); // round up to 5 minutes

たとえば、5 分に丸めます。1分間は楽になります

$time = strtotime(date('Y-m-d H:i:00', time()));
// you will get floor time.
$time = strtotime('+1 minute', $time); // increase time for 1 minute

そのようなタイムスタンプを扱うことはできません。タイムスタンプにはうるう年とタイムゾーンの変更があるためです。単純な数学関数はこれを考慮しません。

于 2013-11-08T14:23:12.530 に答える