【发布时间】:2011-08-11 17:58:42
【问题描述】:
我有一个 PHP DateTime 变量。
如何在 PHP 运行时从该日期缩短或减去 12 小时 30 分钟?
【问题讨论】:
-
如果是 mysql,我会使用 DATE_SUB()
-
您考虑选择一个答案吗?
我有一个 PHP DateTime 变量。
如何在 PHP 运行时从该日期缩短或减去 12 小时 30 分钟?
【问题讨论】:
我用在一条线上,只用了 12 个小时,只是作为一个小时显示
$date = new DateTime(); $date->modify('-12 hours'); echo $date->format('H')-0;
我使用了 -0,因为有时它会在数字前面放一个 0,除非我这样做,奇怪。
【讨论】:
也许对某些情况有用
$date = new DateTime();
$date->modify('-12 hours -30 minutes');
echo $date->format('H:i:s');
【讨论】:
如果您对像 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'));
【讨论】:
简单地使用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");
【讨论】:
尝试改用这个
//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)));
【讨论】:
从 PHP 中的 DateTime 中减去 12 小时 30 分钟:
$date = new DateTime();
$tosub = new DateInterval('PT12H30M');
$date->sub($tosub);
P 代表周期。 T 代表时间跨度。
请参阅 PHP 手册中的 DateTime、DateTime::sub 和 DateInterval。当然,您必须将DateTime 设置为适当的日期和时间。
【讨论】:
尝试:
$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
【讨论】:
试试strtotime()函数:
$source_timestamp=strtotime("2011 年 4 月 30 日星期六 05:00:00 -0400");
$new_timestamp=strtotime("-12 小时 30 分钟", $source_timestamp);
打印日期('r', $new_timestamp);
【讨论】:
【讨论】:
DateTime 对象。
将其存储在DateTime 对象中,然后使用DateTime::sub 方法减去时间跨度。
【讨论】: