gpt4 book ai didi

PHP:奇怪的 DateInterval 长度计算

转载 作者:行者123 更新时间:2023-12-04 05:58:57 24 4
gpt4 key购买 nike

在玩 PHP 时,我想到了这一点:

<?php

$FebruaryTheFirst = \DateTime::createFromFormat('Y-m-d H:i:s', '2001-02-01 00:00:00');
$MarchTheSecond = \DateTime::createFromFormat('Y-m-d H:i:s', '2001-03-01 00:00:00');

$interval = $FebruaryTheFirst->diff($MarchTheSecond);

echo $interval->m.PHP_EOL; // Outputs 0. WTF?

$FebruaryTheFirstbis = \DateTime::createFromFormat('Y-m-d', '2001-02-01');
$MarchTheSecondbis = \DateTime::createFromFormat('Y-m-d', '2001-03-01');

$interval2 = $FebruaryTheFirstbis->diff($MarchTheSecondbis);

echo $interval2->m.PHP_EOL; // Outputs 1. WTF?

$FebruaryTheFirstter = \DateTime::createFromFormat('Y-m-d H:i:s', '2001-02-01 00:01:00');
$MarchTheSecondter = \DateTime::createFromFormat('Y-m-d H:i:s', '2001-03-02 00:01:00');

$interval3 = $FebruaryTheFirstter->diff($MarchTheSecondter);

echo $interval3->m.PHP_EOL; // Outputs 0. WTF?

$FebruaryTheFirstfour = \DateTime::createFromFormat('Y-m-d H:i:s', '2001-02-01 01:00:00');
$MarchTheSecondfour = \DateTime::createFromFormat('Y-m-d H:i:s', '2001-03-02 01:00:00');

$interval4 = $FebruaryTheFirstfour->diff($MarchTheSecondfour);

echo $interval4->m.PHP_EOL; // Outputs 1. WTF?



我应该总是得到 1作为输出,因为我一直在计算 2 月 1 日和 3 月 1 日之间的月份数。但如前所示,我也得到 0 => 跆拳道?

有关信息,我的 php 版本是
PHP 5.3.8 (cli) (built: Jan 12 2012 19:12:32) Copyright (c) 1997-2011
The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend
Technologies with Xdebug v2.1.1, Copyright (c) 2002-2011, by Derick Rethans

最佳答案

看起来这是 PHP 中的一个已知错误。看看 bug report .解决这个问题的唯一方法,至少目前是,使用 UTC 来消除本地时区问题。

示例:

// Get the current timezone.
$originalTimezone = @date_default_timezone_get();

// Work in UTC.
date_default_timezone_set('UTC');

// ...
$dateStart = new DateTime('2001-02-01');
$dateEnd = new DateTime('2001-03-01');
$interval = $dateStart->diff($dateEnd);

// Reset the timezone.
if ($originalTimezone) {
date_default_timezone_set($originalTimezone);
}

关于PHP:奇怪的 DateInterval 长度计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9163378/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com