我正在尝试确定DateTime是否与可能出现的DateInterval完全一致。我使用的时间间隔需要考虑“下个月的第N天”类型的格式规范,我不确定在这些条件下这样的事情是否可行。我的基本想法是反转DateInterval,将其应用于原始DateTime的克隆,将其恢复原样,再次应用,然后检查是否两个DateTime实例相等。如果是这样,它恰好发生在时间间隔上:publicstaticfunctiondateFallsOnPeriod(DateTime$date,DateInterval$interval){$compare=clone$date;//inverttheperiod,ap
我正在使用以下代码:publicstaticfunctiongetDays($day,$m,$y){$days=newDatePeriod(newDateTime("first$dayof$m$y"),DateInterval::createFromDateString('next'.$day),newDateTime("lastdayof$m$y"));foreach($daysas$day){$dates[]=$day->format("Y-m-d");}return$dates;}它在大多数情况下都有效。我给它一个范围,它返回我在范围内之后的每一天的日期。用法:foreach(G
假设我有这个DateInterval的对象实例:$obj=newDateInterval("P1Y12D");现在我可以用那个$obj实例做一些漂亮的事情,但是说我想从对象中取出"P1Y12D"字符串,这是否可能直接不需要覆盖类?我没有找到解决这个问题的方法,也许你找到了。 最佳答案 这是我的@Yaslaw's版本code.它是根据当前PHP社区和PSR要求改进的。我还尝试使其更具可读性和直接性。/***@param\DateInterval$interval**@returnstring*/functiondateInterval
PHP类DateInterval有一个属性“days”。根据手册,它返回“间隔跨越的总天数。如果这是未知的,天数将为假。”在我的例子中,代码:$d=newDateInterval('P1Y');echo$d->days;返回-99999和这样的代码$a=DateTime::createFromFormat("d.m.Y","01.01.2010");$b=DateTime::createFromFormat("d.m.Y","03.01.2010");$d=$b->diff($a);echo$d->days;返回6015我是不是误会了什么? 最佳答案
有很多问题询问如何以其他方式执行此操作(从这种格式转换),但我找不到任何关于如何在PHP中以ISO8601持续时间格式输出的信息。所以我有一堆人类可读格式的持续时间字符串-我想即时将它们转换为ISO8601格式以打印HTML5微数据的持续时间。下面是一些输入字符串的示例,以及它们应该如何格式化"1hour30minutes"-->PT1H30M"5minutes"-->PT5M"2hours"-->PT2H我可以在PHP中将字符串推送到一个区间对象中:date_interval_create_from_date_string("1hour30minutes");但似乎没有ISO8601
我正在使用PHP回显我的MYSQL数据库,并尝试计算列“时间”的每一行中“时间”的差异。我在MYSQL数据库中以TIME格式HH:MM:SS(00:00:00)存储了“时间”。我试图实现的输出示例:SavedOn|Time(MM:SS)|+/-Time(MM:SS)----------------------------------TIMEDATE|00:11|+00:05|----------------------------------TIMEDATE|00:06|00:00|----------------------------------TIMEDATE|00:06|-1:
Row_idSensor_IDdatetime_takeoffdatetime_landing1SFO2013-09-1804:34:222013-09-1908:34:222BWI2013-09-1804:34:222013-09-1816:55:233BWI2013-09-1820:34:222013-09-1910:34:224SFO2013-09-1915:21:222013-09-1920:34:225BWI2013-09-1920:34:222013-09-2006:15:166SFO2013-09-1923:47:222013-09-2007:59:597BWI2013-
获取两个PHPDateTimes之间天数差异的最简单方法是什么,将午夜视为一天的变化(就像DATEDIFF(DAY)SQL函数所做的那样))?例如,从今天13:00到明天12:00,我应该得到1(天),即使间隔小于24小时。$date1=newDateTime("2013-08-0713:00:00");$date2=newDateTime("2013-08-0812:00:00");echo$date1->diff($date2)->days;//0 最佳答案 你可以忽略日期字符串的时间部分$date1=newDateTime(d
获取两个PHPDateTimes之间天数差异的最简单方法是什么,将午夜视为一天的变化(就像DATEDIFF(DAY)SQL函数所做的那样))?例如,从今天13:00到明天12:00,我应该得到1(天),即使间隔小于24小时。$date1=newDateTime("2013-08-0713:00:00");$date2=newDateTime("2013-08-0812:00:00");echo$date1->diff($date2)->days;//0 最佳答案 你可以忽略日期字符串的时间部分$date1=newDateTime(d
我使用的是5.4.24版的php,我不能使用DateInterval类。我收到此错误:PHPfatalerror:找不到“DateInterval”类$interval=newDateInterval('P91D');我应该怎么做才能使这段代码正常工作? 最佳答案 您需要在Controller中添加以下类。还要确保你的php版本(PHP5>=5.3.0,PHP7)useDateTime;useDatePeriod;useDateInterval;classDashboardControllerextendsController{}