簡體   English   中英

在DateTime(PHP)中添加“ x”小時,“ x”分鍾和“ x”秒

[英]Adding 'x' hours, 'x' minutes and 'x' seconds to DateTime (PHP)

我有一個特定的時間戳,並要添加一個'x' hours'x' minutes'x' seconds

我這樣嘗試過:

date_default_timezone_set('UTC'); 
$now = DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''));
$now = $now->setTimezone(new DateTimeZone('Europe/London'))->format('Y-m-d H:i:s.u');

echo '<br> Localized: '.$now;

echo '<br> Time1: '.date("Y-m-d H:i:s", strtotime('+3 hours +5 minutes +4 seconds', $now));

echo '<br> Time2: '.date("Y-m-d H:i:s", strtotime('+0 hours +5 minutes +4 seconds', $now));

Localized: 2018-06-12 10:51:32.166452

Time1: 1970-01-01 03:38:42
Time2: 1970-01-01 00:38:42

但是這樣的結果是不正確的...我在這里做錯了什么?

您可以通過add方法更改DateTime對象。 它需要DateInterval對象。 但是它會更改對象,如果您要創建新對象,則應使用DateTimeImmutable

$now->add(new DateInterval('PT3H5M4S'));

P必需的前綴表示“句號”

T表示“時間”必須在時間段之前出現,因為日期和時間段等於char M

在這種情況下:

  • 3H - 2小時
  • 5M -5分鍾
  • 4S -4秒

完整期間示例可以像此new DateInterval('P1Y2M5DT3H5M4S') ,將等於期間1年2個月5天3小時5分鍾4秒。

您必須將$now轉換為strtotime()

echo '<br> Time1: '.date("Y-m-d H:i:s", strtotime('+3 hours +5 minutes +4 seconds', strtotime($now)));

echo '<br> Time2: '.date("Y-m-d H:i:s", strtotime('+0 hours +5 minutes +4 seconds', strtotime($now)));

您可以使用DateTime.modify做到這一點。

date_default_timezone_set('UTC'); 

$now = new DateTime();
$now->setTimezone(new DateTimeZone('Europe/London'));

$date1 = clone $now;
$date1->modify('+3hours +5minutes +4seconds');

$date2 = clone $now; 
$date2->modify('+0hours +5minutes +4seconds');

echo '<pre>' . var_export($now, true) . '</pre>';
echo '<pre>' . var_export($date1, true) . '</pre>';
echo '<pre>' . var_export($date2, true) . '</pre>';

strtotime函數中的第二個參數應為整數。 因此,將$now轉換$now Unix時間戳。 了解有關strtotime的信息

這很好用:

date_default_timezone_set('UTC');
$now = DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''));
$now = $now->setTimezone(new DateTimeZone('Europe/London'))->format('Y-m-d H:i:s.u');



echo '<br> Localized: ' . $now;

$time = strtotime($now);

echo '<br> Time1: ' . date("Y-m-d H:i:s", strtotime('+3 hours +5 minutes +4 seconds', $time));

echo '<br> Time2: ' . date("Y-m-d H:i:s", strtotime('+0 hours +5 minutes +4 seconds', $time));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM