PHP时间相关DateTime、DateInterval、DatePeriod类,处理ISO 8601(PnYnMnDTnHnMnS)

示例源码

<?php
$dv = new DateInterval('PT1H59M');
print_r($dv);
function to_seconds($dv)
{
    return ($dv->y * 365 * 24 * 60 * 60) +
    ($dv->m * 30 * 24 * 60 * 60) +
    ($dv->d * 24 * 60 * 60) +
    ($dv->h * 60 * 60) +
    ($dv->i * 60) +
    $dv->s;
}
echo (to_seconds($dv)/60).'秒'.PHP_EOL;


$datetime = new DateTime();
echo PHP_EOL.__LINE__.'行 '; var_dump($datetime);

$dateset = new DateTime('2017-05-04 5:10 AM');
echo PHP_EOL.__LINE__.'行 '; var_dump($dateset);

$dateseto = DateTime::createFromFormat('M j, Y H:i:s', 'Jan 2, 2017 12:13:14');
echo PHP_EOL.__LINE__.'行 '; var_dump($dateseto);

//创建时间实例
$datetime = new DateTime('2017-05-04 14:00:00');
//创建长度为两周后
$interval = new DateInterval('P2W');
$datetime->add($interval);
//2017-05-04 14:00:00  两周后的时间
echo PHP_EOL.__LINE__.'行 '; echo $datetime->format('Y-m-d H:i:s') . PHP_EOL;

//间隔2天   往后数10次
$timenow = new \Datetime();
$datetin = DateInterval::createFromDateString('-2 day');
$datePer = new \DatePeriod($timenow, $datetin, 10);
foreach ($datePer as $day) {
    echo $day->format('Y-m-d'), PHP_EOL;
}

输出结果:

DateInterval Object
(
    [y] => 0
    [m] => 0
    [d] => 0
    [h] => 1
    [i] => 59
    [s] => 0
    [f] => 0
    [weekday] => 0
    [weekday_behavior] => 0
    [first_last_day_of] => 0
    [invert] => 0
    [days] =>
    [special_type] => 0
    [special_amount] => 0
    [have_weekday_relative] => 0
    [have_special_relative] => 0
)
119秒

17行 object(DateTime)#2 (3) {
  ["date"]=>
  string(26) "2020-07-18 17:23:32.374578"
  ["timezone_type"]=>
  int(3)
  ["timezone"]=>
  string(3) "UTC"
}

20行 object(DateTime)#3 (3) {
  ["date"]=>
  string(26) "2017-05-04 05:10:00.000000"
  ["timezone_type"]=>
  int(3)
  ["timezone"]=>
  string(3) "UTC"
}

23行 object(DateTime)#4 (3) {
  ["date"]=>
  string(26) "2017-01-02 12:13:14.000000"
  ["timezone_type"]=>
  int(3)
  ["timezone"]=>
  string(3) "UTC"
}

31行 2017-05-18 14:00:00
2020-07-18
2020-07-16
2020-07-14
2020-07-12
2020-07-10
2020-07-08
2020-07-06
2020-07-04
2020-07-02
2020-06-30
2020-06-28
最后修改:2020 年 07 月 19 日 01 : 32 AM
如果觉得我的文章对你有用,请随意赞赏

发表评论