在进行了大量的google'ing和PHP手动阅读之后,我真的很想在日期时间增加X分钟,我似乎一无所获。
我的日期时间格式是:
2011-11-17 05:05
: year-month-day hour:minute
要添加的分钟数只是0到59之间的数字
我希望输出与添加分钟的输入格式相同。
有人可以给我一个有效的代码示例,因为我的尝试似乎并没有带我去任何地方?
Answers:
$minutes_to_add = 5;
$time = new DateTime('2011-11-17 05:05');
$time->add(new DateInterval('PT' . $minutes_to_add . 'M'));
$stamp = $time->format('Y-m-d H:i');
在ISO 8601标准的持续时间是在形式的串P{y}Y{m1}M{d}DT{h}H{m2}M{s}S
,其中所述{*}
部件用指示的持续时间有多长一个数字值代替。
例如,P1Y2DT5S
表示1年,2天和5秒。
在上面的示例中,我们向构造函数提供PT5M
(或5分钟)DateInterval
。
strtotime
生成一个Unix时间戳作为时间戳,integer
如果您要在php中对日期进行排序等,这将很有帮助。的DateTime
类提供对象和程序样式的操作选项。它更具可读性,并且还更好地支持处理不同时区之间的差异;例如,如果您有一个项目,该项目输出来自同一数据实例的多个不同时区的日期。
PHP的DateTime类具有有用的修改方法,该方法采用易于理解的文本。
$dateTime = new DateTime('2011-11-17 05:05');
$dateTime->modify('+5 minutes');
您还可以使用字符串插值或串联来对其进行参数化:
$dateTime = new DateTime('2011-11-17 05:05');
$minutesToAdd = 5;
$dateTime->modify("+{$minutesToAdd} minutes");
我认为这在处理时区时也会有所帮助。我修改后的解决方案基于@Tim Cooper的解决方案,即上面的正确答案。
$minutes_to_add = 10;
$time = new DateTime();
**$time->setTimezone(new DateTimeZone('America/Toronto'));**
$time->add(new DateInterval('PT' . $minutes_to_add . 'M'));
$timestamp = $time->format("Y/m/d G:i:s");
粗线(第3行)是添加的。我希望这对某些人也有帮助。
答案有点晚,但是我将使用的方法是:
// Create a new \DateTime instance
$date = DateTime::createFromFormat('Y-m-d H:i:s', '2015-10-26 10:00:00');
// Modify the date
$date->modify('+5 minutes');
// Output
echo $date->format('Y-m-d H:i:s');
或在PHP> = 5.4中
echo (DateTime::createFromFormat('Y-m-d H:i:s', '2015-10-26 10:00:00'))->modify('+5 minutes')->format('Y-m-d H:i:s')
如果要提供包含分钟数的变量。
然后我认为这是实现此目标的好方法。
$minutes = 10;
$maxAge = new DateTime('2011-11-17 05:05');
$maxAge->modify("+{$minutes} minutes");
我不知道为什么设置为解决方案的方法对我不起作用。所以我在这里发布对我有用的东西,希望它可以对任何人有帮助:
$startTime = date("Y-m-d H:i:s");
//display the starting time
echo '> '.$startTime . "<br>";
//adding 2 minutes
$convertedTime = date('Y-m-d H:i:s', strtotime('+2 minutes', strtotime($startTime)));
//display the converted time
echo '> '.$convertedTime;
正如Brad和Nemoden在上面的回答中所指出的那样,strtotime()是一个很棒的函数。我个人认为,对于许多用例,标准的DateTime对象过于复杂。例如,我只想将当前时间增加5分钟。
我编写了一个函数,该函数以带一些可选参数的字符串形式返回日期:
1.)time:String | 例如:“ + 5分钟”(默认=当前时间)
2。)格式:字符串| 例如:“ Ymd H:i:s”(默认=“ Ymd H:i:s O”)
显然,这不是功能齐全的方法。只是用于修改/格式化当前日期的快速简单功能。
function get_date($time=null, $format='Y-m-d H:i:s O')
{
if(empty($time))return date($format);
return date($format, strtotime($time));
}
// Example #1: Return current date in default format
$date = get_date();
// Example #2: Add 5 minutes to the current date
$date = get_date("+5 minutes");
// Example #3: Subtract 30 days from the current date & format as 'Y-m-d H:i:s'
$date = get_date("-30 days", "Y-m-d H:i:s");
一个执行此操作的函数的另一个示例:(更改时间和间隔格式,但是您希望根据function.date和DateInterval的格式更改它们):
// Return adjusted time.
function addMinutesToTime( $dateTime, $plusMinutes ) {
$dateTime = DateTime::createFromFormat( 'Y-m-d H:i', $dateTime );
$dateTime->add( new DateInterval( 'PT' . ( (integer) $plusMinutes ) . 'M' ) );
$newTime = $dateTime->format( 'Y-m-d H:i' );
return $newTime;
}
$adjustedTime = addMinutesToTime( '2011-11-17 05:05', 59 );
echo '<h1>Adjusted Time: ' . $adjustedTime . '</h1>' . PHP_EOL . PHP_EOL;
不使用变量:
$yourDate->modify("15 minutes");
echo $yourDate->format( "Y-m-d H:i");
使用变量:
$interval= 15;
$yourDate->modify("+{$interval } minutes");
echo $yourDate->format( "Y-m-d H:i");
$yourDate
啊 这个答案与几年前发布的类似答案有什么区别?