1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

phpでの時間の扱い

Last updated at Posted at 2021-02-03

phpで日付,時間を使ったので忘れないようにメモ

##概要
phpを日付を使用する際には,DateTimeDateTimeImmutableオブジェクトがある.
基本的には同様の振る舞いをするが,加算/減算する際には振る舞いが異なる.

  • DateTime:オブジェクトそのものを変更する
  • DateTimeImmutable:変更したオブジェクトを返す

スクリーンショット 2021-02-10 22.51.40.png
日付処理で主にやりたいこと

  1. 今の年月日取得
  2. 日付型の演算(2種類)
  3. 日付型から一部のみ取得(年など)(文字列を日付に変換)

1.日付型の取得

DateTimeオブジェクトの作成.引数を入れなければ現在に時刻から作成


$date_obj = new Date()
//DateTime Object
//(
//    [date] => 2021-02-03 13:20:16.977190
//    [timezone_type] => 3
//    [timezone] => UTC
//)

$date_obj2 = new DateTime('2020-01-01');
(
    [date] => 2020-01-01 00:00:00.000000
    [timezone_type] => 3
    [timezone] => UTC
)

2-1. 日付型の演算

modifyを噛ませる.(オブジェクトの中身が上書きされることに注意)

$date_obj->modify('+1 years');  // 2022-02-03
$date_obj->modify('+1 months'); // 2022-03-03
$date_obj->modify('+1 days');   // 2022-03-04

2-2. 日付型の演算

DateTimeImmutableオブジェクトの場合はDateInterval(),add(),sub()を使用する.(返り値がある)
日付同士の差については,DateTimeInterface::diff() を使用するが省略.

$date_obj = new DateTimeImmutable('2020-01-01');
// 加算,減算する間隔を定義
// P:Period, Y:year, M:month, D:day
$interval1 = new DateInterval('P1Y'); //1年
$interval2 = new DateInterval('P1M'); //1ヶ月
$interval3 = new DateInterval('P1D'); //1日

//加算add(),減算sub()を使用
$next_year = $date_obj->add($interval1);       //2021-01-01
$before_month = $date_obj->sub($interval2); //2019-12-01

日付型から一部のみ取得(年など)

$date_obj->format('Y') //2022
$date_obj->format('M') //Mar
$date_obj->format('m') //03
$date_obj->format('d') //02
$date_obj->format('D') //Fri

UNIXタイムスタンプの取得

UNIXタイムスタンプは,1970年1月1日午前0時0分0秒から形式的な経過秒数


$date_obj2->getTimestamp() //1577887268

参考

https://www.php.net/manual/ja/class.datetime.php
https://www.php.net/manual/ja/datetimeimmutable.add.php
https://www.php.net/manual/ja/class.dateinterval.php

1
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?