H olarak biçimlendirilmiş zaman 30 dakika Ekleme: PHP i

3 Cevap php

Şu anda bir kabus olması ve bu çalışma, sadece neden göremiyorum

Ben Form H bir değer vardır: i (yani 10:00, 13:30 vb) $ süresi denir

Ne yapmak istediğiniz iki yeni değerler, $ zaman önce 30 dakika ve $ zaman sonra 30 dakika olduğunu EndTime $ $ startTime oluşturmak olduğunu

Ben şu denedim ama sadece çalışmak istiyorum görünmüyor

$startTime = date("H:i",strtotime('-30 minutes',$time));
$endTime = date("H:i",strtotime('+30 minutes',$time));

Ben $ zaman olarak 10:00 geçmesine ve $ startTime ve $ EndTime hem echo Eğer ben alıyorum:

$startTime = 00:30
$startTime = 01:30        

3 Cevap

Bu iş için için $time, bir zaman damgası olmak zorundadır. Sonra ben de sonuç olarak 00:30 ve 01:30 olsun, çünkü, "10:00" veya $time = date('H:i', '10:00'); yapmanız gibi ne gibi bir şey geçemez.

Denemek

$time = strtotime('10:00');

Bir alternatif olarak, DateTime kullanmayı düşünün (the below requires PHP 5.3 though):

$dt = DateTime::createFromFormat('H:i', '10:00'); // create today 10 o'clock
$dt->sub(new DateInterval('PT30M'));              // substract 30 minutes
echo $dt->format('H:i');                          // echo modified time
$dt->add(new DateInterval('PT1H'));               // add 1 hour
echo $dt->format('H:i');                          // echo modified time

veya prosedürel Eğer OOP beğenmediğiniz

$dateTime = date_create_from_format('H:i', '10:00');
date_sub($dateTime, date_interval_create_from_date_string('30 minutes'));
echo date_format($dateTime, 'H:i');
date_add($dateTime, date_interval_create_from_date_string('1 hour'));
echo date_format($dateTime, 'H:i');

Ben genellikle biraz farklı bir yol alır:

$startTime = date("H:i",time() - 1800); $endTime = date("H:i",time() + 1800);

Nerede 1800 saniye = 30 dakika.

$time bir dize olduğundan mevcut çözüm işe yaramazsa - bir Unix zaman damgası olması gerekir. Bunu yerine bunu yapabilirsiniz:

$unix_time = strtotime('January 1 2010 '.$time); // create a unix timestamp
$startTime date( "H:i", strtotime('-30 minutes', $unix_time) );
$endTime date( "H:i", strtotime('+30 minutes', $unix_time) );