[英]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.