DateTime::setTime

date_time_set

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

DateTime::setTime -- date_time_setSets the time

Açıklama

Nesne yönelimli kullanım

public DateTime::setTime(
    int $hour,
    int $minute,
    int $second = 0,
    int $microsecond = 0
): DateTime

Yordamsal kullanım

date_time_set(
    DateTime $object,
    int $hour,
    int $minute,
    int $second = 0,
    int $microsecond = 0
): DateTime

Resets the current time of the DateTime object to a different time.

Like DateTimeImmutable::setTime() but works with DateTime.

The procedural version takes the DateTime object as its first argument.

Bağımsız Değişkenler

nesne

Sadece yordamsal tarz: date_create() tarafından bir DateTime nesnesi döndürülür. İşlev bu nesnede değişiklik yapar.

hour

Hour of the time.

minute

Minute of the time.

second

Second of the time.

microsecond

Microsecond of the time.

Dönen Değerler

Yöntem zincirleme için değişmiş DateTime nesnesi döner.

Sürüm Bilgisi

Sürüm: Açıklama
8.1.0 The behaviour with double existing hours (during the fall-back DST transition) changed. Previously PHP would pick the second occurrence (after the DST transition), instead of the first occurrence (before DST transition).
7.1.0 The microsecond parameter was added.

Ayrıca Bakınız

add a note add a note

User Contributed Notes 2 notes

up
10
fabien dot villepinte at gmail dot com
7 years ago
A 4th parameter has been added in PHP-7.1 : microseconds

See the notes here:
https://github.com/php/php-src/blob/e33ec61f9c1baa73bfe1b03b8c48a824ab2a867e/UPGRADING#L285
up
1
php-notes at allenjb dot me dot uk
3 years ago
Be aware that setTime can cause a change in the timezone offset: https://3v4l.org/MqYN9

(The time 01:05:00 exists twice on this day in Europe/London due to DST change - once in +01:00 and then again at +00:00)

$tzUK = new \DateTimeZone("Europe/London");
$tzUtc = new \DateTimeZone("UTC");
$dt = \DateTimeImmutable::createFromFormat("!Y-m-d H:i:s", "2020-10-25 00:05:00", $tzUtc);
$dt = DateTime::createFromFormat('U', $dt->format('U'));

print $dt->format(\DateTime::RFC3339 ." e") ."\n";

$dt->setTimeZone($tzUK);

print $dt->format(\DateTime::RFC3339 ." e") ."\n";

$dt->setTime((int) $dt->format('H'), (int) $dt->format('i'), 0);

print $dt->format(\DateTime::RFC3339 ." e") ."\n";

Will output:
2020-10-25T00:05:00+00:00 +00:00
2020-10-25T01:05:00+01:00 Europe/London
2020-10-25T01:05:00+00:00 Europe/London

Verified on PHP 5.3 thru 8.0 (latest at time of posting)
To Top