私は$adate;
それを含んでいます:
Tue Jan 4 07:59:59 2011
この日付に以下を追加したいと思います。
$duration=674165; // in seconds
秒が追加されたら、結果を日付形式に戻す必要があります。
何をしているのかわかりませんが、奇妙な結果が出ています。
注:両方の変数は動的です。これで、指定された値と等しくなりますが、次のクエリでは異なる値になります。
php 5.3+を使用している場合は、新しい方法を使用できます。
<?php
$date = new DateTime();
echo $date->getTimestamp(). "<br>";
$date->add(new DateInterval('PT674165S')); // adds 674165 secs
echo $date->getTimestamp();
?>
いくつかの素晴らしいPHP日付/時刻関数を使用するだけです。
$adate="Tue Jan 4 07:59:59 2011";
$duration=674165;
$dateinsec=strtotime($adate);
$newdate=$dateinsec+$duration;
echo date('D M H:i:s Y',$newdate);
タイムスタンプであるという事実を考えると$adate
(その場合)、次のようなことができます。
$duration = 674165;
$result_date = strtotime(sprintf('+%d seconds', $duration), $adate);
echo date('Y-m-d H:i:s', $result_date);
// add 20 sec to now
$duration = 20;
echo date("Y-m-d H:i:s", strtotime("+$duration sec"));
これを行う:
$seconds = 1;
$date_now = "2016-06-02 00:00:00";
echo date("Y-m-d H:i:s", (strtotime(date($date_now)) + $seconds));
$current_time_zone = 150;
date("Y-m-d H:i:s",strtotime(date("Y-m-d H:i:s"))+$current_time_zone);
この例はタイムゾーン用に作成しましたが、一部を変更すると役立つ場合があります。
$seconds_to_add = 30;
$time = new DateTime();
$time->setTimezone(new DateTimeZone('Europe/London'));
$time2 = $time->format("Y/m/d G:i:s");
$time->add(new DateInterval('PT' . $seconds_to_add . 'S'));
$timestamp = $time->format("Y/m/d G:i:s");
echo $timestamp;
echo '========';
echo $time2;
結果:
2018/06/17 3:16:23========2018/06/17 3:15:53
現在の時刻に動的データ/時刻値を追加するという問題をstrtotime()
解決するのに問題があります
これが私の解決策でした:
$expires = 3600; //my dynamic time variable (static representation here)
$date = date_create(date('Y-m-d H:i:s')); //create a date/time variable (with the specified format - create your format, see (1))
echo date_format($date, 'Y-m-d H:i:s')."<br/>"; //shows the date/time variable without add seconds/time
date_add($date, date_interval_create_from_date_string($expires.' seconds')); //add dynamic quantity of seconds to data/time variable
echo date_format($date, 'Y-m-d H:i:s'); //shows the new data/time value
フォント:https ://secure.php.net/manual/en/datetime.add.php (オブジェクト指向スタイルも参照してください。ElzoValugiソリューション)
計算を実行する必要があるときは、何が必要かを常に念頭に置いています。たとえば、日時に数秒を追加する必要がある場合、将来のどこかに日時が必要になります。つまり、というクラスが必要Future
です。それはどのように識別されますか?どのようなデータを操作する必要がありますか?少なくとも2つの値が必要なようです。1つは将来の日付が必要な日時、もう1つは開始日時と目的の日時の間の時間距離を定義する間隔です。
だからここにコードがあります:
use Meringue\ISO8601DateTime\FromISO8601 as DateTimeFromISO8601String;
$f =
new Future(
new DateTimeFromISO8601String('2011-01-04T07:59:59+00'),
new NSeconds(674165)
);
次に、ISO8601形式で出力できます。
$f->value(); // returns 2011-01-12T03:16:04+00:00
最初の日時がISO8601形式でない場合(例の場合)、カスタム形式から日時を作成する必要があります。したがって、クラスの名前は-FromCustomFormat
です。これはISO8601形式でそれ自体を表す日時であるため、と呼ばれる抽象クラスを拡張しISO8601DateTime
ます。完全な例を次に示します。
(new Future(
new FromCustomFormat(
'D M j H:i:s Y',
'Tue Jan 4 07:59:59 2011'
),
new NSeconds(674165)
))
->value();
このアプローチについてもう少し説明します。