PHP DateTimeImmutableクラスのmodifyメソッドでn年前、nヶ月前の日時を計算するサンプル

環境
PHP 8.1.2
Ubuntu 22.04.1 LTS

構文
public DateTimeImmutable::modify ( string $modifier ) : DateTimeImmutable|false
$変数名 = new DateTimeImmutable(日付);
3年前を求める
$変数名->->modify(“-3 year");

2ヶ月前を求める
$変数名->modify(“-2 month");
DateTimeクラスは、ミュータブルのためここではイミュータブルのDateTimeImmutableクラスを使用しています。
年月日時分秒と週を指定しています。
modifyメソッドの引数にプラスの値を指定すると加算します。

使用例

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<!DOCTYPE html>
<html>
<body>
<?php
$dateA = new DateTimeImmutable('2022-11-10 12:20:30');
// 3年前を求める
$dateB = $dateA->modify("-3 year");
echo "<pre>";
print "3年前の日時を計算する結果: \n";
print $dateB->format("Y/m/d H:i:s");
echo "</pre>";
// 3ヶ月前を求める
$dateC = $dateA->modify("-3 month");
echo "<pre>";
print "3ヶ月前の日時を計算する結果: \n";
print $dateC->format("Y/m/d H:i:s");
echo "</pre>";
// 3日前を求める
$dateD = $dateA->modify("-3 day");
echo "<pre>";
print "3日前の日時を計算する結果: \n";
print $dateD->format("Y/m/d H:i:s");
echo "</pre>";
?>
</body>
</html>
<!DOCTYPE html> <html> <body> <?php $dateA = new DateTimeImmutable('2022-11-10 12:20:30'); // 3年前を求める $dateB = $dateA->modify("-3 year"); echo "<pre>"; print "3年前の日時を計算する結果: \n"; print $dateB->format("Y/m/d H:i:s"); echo "</pre>"; // 3ヶ月前を求める $dateC = $dateA->modify("-3 month"); echo "<pre>"; print "3ヶ月前の日時を計算する結果: \n"; print $dateC->format("Y/m/d H:i:s"); echo "</pre>"; // 3日前を求める $dateD = $dateA->modify("-3 day"); echo "<pre>"; print "3日前の日時を計算する結果: \n"; print $dateD->format("Y/m/d H:i:s"); echo "</pre>"; ?> </body> </html>
<!DOCTYPE html>
<html>
<body>

<?php
$dateA = new DateTimeImmutable('2022-11-10 12:20:30');

// 3年前を求める
$dateB = $dateA->modify("-3 year");
echo "<pre>";
print "3年前の日時を計算する結果: \n";
print $dateB->format("Y/m/d H:i:s"); 
echo "</pre>";

// 3ヶ月前を求める
$dateC = $dateA->modify("-3 month");
echo "<pre>";
print "3ヶ月前の日時を計算する結果: \n";
print $dateC->format("Y/m/d H:i:s"); 
echo "</pre>";

// 3日前を求める
$dateD = $dateA->modify("-3 day");
echo "<pre>";
print "3日前の日時を計算する結果: \n";
print $dateD->format("Y/m/d H:i:s");
echo "</pre>";

?> 

</body>
</html>

実行結果

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
3年前の日時を計算する結果:
2019/11/10 12:20:30
3ヶ月前の日時を計算する結果:
2022/08/10 12:20:30
3日前の日時を計算する結果:
2022/11/07 12:20:30
3年前の日時を計算する結果: 2019/11/10 12:20:30 3ヶ月前の日時を計算する結果: 2022/08/10 12:20:30 3日前の日時を計算する結果: 2022/11/07 12:20:30
3年前の日時を計算する結果:
2019/11/10 12:20:30
3ヶ月前の日時を計算する結果:
2022/08/10 12:20:30
3日前の日時を計算する結果:
2022/11/07 12:20:30

 

PHP

Posted by arkgame