PHP,需要从 DateTime 中减去 12 小时 30 分钟
Posted
技术标签:
【中文标题】PHP,需要从 DateTime 中减去 12 小时 30 分钟【英文标题】:PHP, need to subtract 12 hours and 30 minutes from a DateTime 【发布时间】:2011-08-11 17:58:42 【问题描述】:我有一个 php DateTime
变量。
如何在 PHP 运行时从该日期缩短或减去 12 小时 30 分钟?
【问题讨论】:
如果是 mysql,我会使用 DATE_SUB() 您考虑选择一个答案吗? 【参考方案1】:我用在一条线上,只用了 12 个小时,只是作为一个小时显示
$date = new DateTime(); $date->modify('-12 hours'); echo $date->format('H')-0;
我使用了 -0,因为有时它会在数字前面放一个 0,除非我这样做,奇怪。
【讨论】:
【参考方案2】:也许对某些情况有用
$date = new DateTime();
$date->modify('-12 hours -30 minutes');
echo $date->format('H:i:s');
【讨论】:
【参考方案3】:如果您对像 PT12H30M 这样的 DateInterval 规范不太熟悉,您可以使用 DateInterval::createFromDateString 以更易于阅读的方式继续进行,如下所示:
$date = new DateTime();
$interval = DateInterval::createFromDateString('12 hour 30 minute');
$date->sub($interval);
或在子函数中直接间隔如下:
$date = new DateTime();
$date->sub(DateInterval::createFromDateString('12 hour 30 minute'));
【讨论】:
【参考方案4】:简单地使用strtotime
echo date("Y-m-d H:i:s",strtotime("-12 hour -30 minutes"));
使用DateTime
类
$date = new DateTime("-12 hour -30 minutes");
echo $date->format("Y-m-d H:i:s");
【讨论】:
【参考方案5】:尝试改用这个
//set timezone
date_default_timezone_set('GMT');
//set an date and time to work with
$start = '2014-06-01 14:00:00';
//display the converted time
echo date('Y-m-d H:i',strtotime('+1 hour +20 minutes',strtotime($start)));
【讨论】:
【参考方案6】:从 PHP 中的 DateTime 中减去 12 小时 30 分钟:
$date = new DateTime();
$tosub = new DateInterval('PT12H30M');
$date->sub($tosub);
P 代表周期。 T 代表时间跨度。
请参阅 PHP 手册中的 DateTime、DateTime::sub 和 DateInterval。当然,您必须将DateTime
设置为适当的日期和时间。
【讨论】:
【参考方案7】:尝试:
$date = new DateTime('Sat, 30 Apr 2011 05:00:00 -0400');
echo $date->format('Y-m-d H:i:s') . "\n";
$date->sub(new DateInterval('PT12H30M'));
echo $date->format('Y-m-d H:i:s') . "\n";
//结果
2011-04-30 05:00:00
2011-04-29 16:30:00
【讨论】:
【参考方案8】:试试strtotime()
函数:
$source_timestamp=strtotime("2011 年 4 月 30 日星期六 05:00:00 -0400"); $new_timestamp=strtotime("-12 小时 30 分钟", $source_timestamp); 打印日期('r', $new_timestamp);
【讨论】:
【参考方案9】:Here is detailed description of date function,
【讨论】:
在这种情况下这不是很有帮助。他真的应该使用DateTime
对象。
是的更新了它.. 实际上我在 datetime 对象上到处都看到了他的多个问题,所以这对他来说很方便。【参考方案10】:
将其存储在DateTime
对象中,然后使用DateTime::sub
方法减去时间跨度。
【讨论】:
以上是关于PHP,需要从 DateTime 中减去 12 小时 30 分钟的主要内容,如果未能解决你的问题,请参考以下文章