在PHP中处理时间
为了不会忘记,使用PHP进行日期和时间,记得做备忘录。
总结
使用PHP进行日期操作时,有DateTime和DateTimeImmutable两个对象。
它们基本上具有相同的行为,但在进行加法/减法操作时,它们的行为不同。
DateTime:オブジェクトそのものを変更する
DateTimeImmutable:変更したオブジェクトを返す
-
- 获取当前日期
-
- 日期类型的运算(两种)
- 从日期类型中获取部分信息(如年份)(将字符串转换为日期)
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类的页面。