web-dev-qa-db-ja.com

現在までの「x」時間を追加

私は現在、次のように現在の日付/時刻を返すphpを持っています:

$now = date("Y-m-d H:m:s");

私がやりたいのは、新しい変数$new_time$now + $hoursを持つことです。ここで、$hoursは24から800までの時間数です。

助言がありますか?

62
Jonah Katz

strtotime() 関数のようなものを使用して、現在のタイムスタンプに何かを追加できます。 $new_time = date("Y-m-d H:i:s", strtotime('+5 hours'))

関数で変数が必要な場合は、strtotime("+{$hours} hours")のように二重引用符を使用する必要がありますが、strtotime(sprintf("+%d hours", $hours))を使用する方が適切です。

99
fdomig

他の解決策(オブジェクト指向)は、DateTime :: addを使用することです

例:

$now = new DateTime(); //current date/time
$now->add(new DateInterval("PT{$hours}H"));
$new_time = $now->format('Y-m-d H:i:s');

PHPドキュメント

34
FAjir

strtotime() を使用してこれを実現できます。

$new_time = date("Y-m-d H:i:s", strtotime('+3 hours', $now)); // $now + 3 hours
18
Zar

正しい

Strtotime()を使用してこれを実現できます。

$new_time = date("Y-m-d H:i:s", strtotime('+3 hours', strtotime($now))); // $now + 3 hours
9
Rodrigo Prazim

ええと...あなたの議事録を修正する必要があります... 'i'は分です。数ヶ月ではありません。 :)(何かにも同じ問題がありました。

$now = date("Y-m-d H:i:s");
$new_time = date("Y-m-d H:i:s", strtotime('+3 hours', $now)); // $now + 3 hours
5
vr_driver

Unixスタイルの時間を使用して計算することもできます。

$newtime = time() + ($hours * 60 * 60); // hours; 60 mins; 60secs
echo 'Now:       '. date('Y-m-d') ."\n";
echo 'Next Week: '. date('Y-m-d', $newtime) ."\n";
4
Ankit

Lib Ouzo goodies を試して、これを流wayに実行できます。

echo Clock::now()->plusHours($hours)->format("Y-m-d H:m:s");

APIは複数の操作を許可します。

2

私はこれを使用します。

//set timezone
date_default_timezone_set('GMT');

//set an date and time to work with
$start = '2014-06-01 14:00:00';

//display the converted time
echo date('Y-m-d H:i',strtotime('+1 hour +20 minutes',strtotime($start)));
$date_to_be-added="2018-04-11 10:04:46";
$added_date=date("Y-m-d H:i:s",strtotime('+24 hours', strtotime($date_to_be)));

date()strtotime() 関数の組み合わせがトリックを行います。

0
user7282

次の関数を使用して、通常の日時値をmysql日時形式に変換します。

private function ampmtosql($ampmdate) {
            if($ampmdate == '')
                return '';
            $ampm = substr(trim(($ampmdate)), -2);
            $datetimesql = substr(trim(($ampmdate)), 0, -3);
            if ($ampm == 'pm') {
                $hours = substr(trim($datetimesql), -5, 2);
                if($hours != '12')
                    $datetimesql = date('Y-m-d H:i',strtotime('+12 hour',strtotime($datetimesql)));
            }
            elseif ($ampm == 'am') {
                $hours = substr(trim($datetimesql), -5, 2);
                if($hours == '12')
                    $datetimesql = date('Y-m-d H:i',strtotime('-12 hour',strtotime($datetimesql)));
            }
            return $datetimesql;
        }

以下のような日時値を変換します

2015-06-04 09:55 AM -> 2015-06-04 09:55
2015-06-04 03:55 PM -> 2015-06-04 15:55
2015-06-04 12:30 AM -> 2015-06-04 00:55

これが誰かを助けることを願っています。

0
Vajira Lasantha