草庐IT

datetime2

全部标签

PHP 错误的 DateTime::diff() 返回错误的 DateInterval

我有两个日期时间相差的问题。这是显示DateInterval对象的命令行:php-r"\$a=newDatetime('firstdayof4monthsagomidnight');\$b=newDatetime('firstdayof1monthagomidnight');var_dump(\$a->diff(\$b));"这里是DateInterval输出:classDateInterval#3(15){public$y=>int(0)public$m=>int(3)public$d=>int(3)public$h=>int(0)public$i=>int(0)public$s=>

php - 处理 PHP DateTime 中格式正确但无效的日期

我正在尝试使用PHP的DateTime来验证日期,但DateTime会接受一些格式正确但无效的日期,例如2015-02-30,它将变成March2,2015,没有抛出异常。使用DateTime或其他方法处理此问题有什么建议吗?编辑:谢谢大家的帮助!我是通过捕获异常来处理错误的,但我没有意识到异常只是在错误时抛出,而不是警告,而且这种输入只会引发警告。 最佳答案 使用DateTime::getLastErrors()检查错误。格式正确但无效的日期:$date='2015-02-30';DateTime::createFromForma

php - sonata_type_datetime_picker 初始日期

现在,当日期输入为空时,我将触发日期选择器,它会给我当前的日期时间。我想更改此配置以获取当前日期,但时间为00:00:00。我不知道如何得到这个。有什么想法吗?我知道我在创建日期选择器时有这个选项:"action","attr","auto_initialize","block_name","by_reference","cascade_validation","compound","constraints","csrf_field_name","csrf_message","csrf_protection","csrf_provider","data","data_class","d

php - 无法从 PHP 中的 DateTime 获取上个月 - 这是一个(相当大的)错误吗?

我需要在PHP中创建函数,让我可以在给定的日期时间单位上调/下调。具体来说,我需要能够从当前月份转到下一个月/上一个月。我想我可以使用DateTime::add/sub(P1M)来做到这一点。但是,当尝试获取上个月时,如果日期值=31,它就会出错-看起来它实际上是在倒数30天而不是递减月份值!:$prevMonth=newDateTime('2010-12-31');尝试减少月份:$prevMonth->sub(newDateInterval('P1M'));//='2010-12-01'$prevMonth->add(DateInterval::createFromDateStrin

PHP DateTime::diff 问题与 DateTime::format

当我尝试使用正常的PHP代码(d、Y、m等)为日期和时间格式化我的日期差异时,它只输出字母,而不是值。这仅在我格式化DateTime::diff时才会发生。它适用于简单的DateTime对象。这个:$date1=newDateTime('2000-01-01');$date2=newDateTime('now');$date=$date2->diff($date1);echo$date->format('ddaysago');“d天前”的输出。我知道如果我用%a替换d,它会输出这是多少天前的信息。我想知道还有哪些字符可以输出秒、分甚至年。提前致谢! 最佳答案

php - 解析年份时 strtotime 和 DateTime 给出错误的年份

$year=date('Y',strtotime("2012"));var_dump($year);//returns2013这发生在一台装有php5.2的旧服务器和一台装有php5.4的新服务器上服务器使用strtotime从类似2012-01-01或2012-01或2012的字符串中获取年份我还尝试使用$dt=newDateTime('2012')然后getTimestamp返回“1374516720”,即“Mon,22Jul201318:12:00格林威治标准时间”是什么导致了这个错误?在documentation它说strtotime只接受年份我不知道该怎么办...编辑:$ye

php - 为什么 DateTime::diff 在这些日期之间返回 0 天?

考虑以下测试用例:$start=newDateTime("2011-02-25");$end=newDateTime("2011-03-25");$interval=$end->diff($start);echo"INTERVAL=".$interval->format("%d");//Shouldgivemethe//intervalindays,right?echo"START=".$start->format("Y-m-d");echo"END=".$end->format("Y-m-d");结果是:INTERVAL=0diff()似乎声称2011年2月25日和2011年3月25

PHP DateTime::Diff "steals"一天

我想计算两天之间的日期差异。问题是当我计算天数时,计算中缺少一天(当天)。假设date1是20-12-2014,date2是21-12-2014。DateTime::Diff使用这两个日期的结果是0(我想是1,而不是零)我是不是漏掉了什么不好的东西,或者DateTime::Diff像我上面解释的那样计算日期差异?这是我正在使用的代码(我想以天为单位显示日期差异):$currentDay=newDateTime();$listDay=newDateTime($results["date"]);//frommysqldatabase(outputislike21-12-2014$inter

php - 错误的月份(二月)- DateTime::createFromFormat

这个问题在这里已经有了答案:PHPDateTime::createFromFormatbehavoiur(2个答案)关闭去年。从字符串进行的日期转换返回第二个月(二月)的错误值:$dtformat='Y-m-01';$curDate=DateTime::createFromFormat('Y-m','1996-02');print_r($curDate);$dt=$curDate->format($dtformat);echo$dt."\n";它返回“1996-03-01”而不是“1996-02-01”。这是$currDate数组:DateTimeObject([date]=>1996

php - 单元测试包含 DateTime ("now"的函数)

我有一个类似这样的函数:publicfunctiongetSomeInfo($id){$date_start=newDateTime();$day_of_week=$date_start->format("N");$date_start=$date_start->sub(newDateInterval("P".$day_of_week."D"));$date_end=new$date_start;$date_end=$date_end->add(newDateInterval("P5D"));$date_start=$date_start->format("Y-m-d");$date_