在PHP中处理时间

为了不会忘记,使用PHP进行日期和时间,记得做备忘录。

总结

使用PHP进行日期操作时,有DateTime和DateTimeImmutable两个对象。
它们基本上具有相同的行为,但在进行加法/减法操作时,它们的行为不同。

DateTime:オブジェクトそのものを変更する

DateTimeImmutable:変更したオブジェクトを返す

スクリーンショット 2021-02-10 22.51.40.png
    1. 获取当前日期

 

    1. 日期类型的运算(两种)

 

    从日期类型中获取部分信息(如年份)(将字符串转换为日期)

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. 进行日期计算的数据类型

注意:修改对象的内容将被覆盖。

$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

这是一个关于DateTime类的页面。

https://www.php.net/manual/ja/datetimeimmutable.add.php

这是有关于DateTimeImmutable类的add方法的页面。

https://www.php.net/manual/ja/class.dateinterval.php

这是关于DateInterval类的页面。

广告
将在 10 秒后关闭
bannerAds