DateTime::setTime

date_time_set

(PHP 5 >= 5.2.0, PHP 7)

DateTime::setTime -- date_time_setSets the time

Opis

Styl obiektowy

public DateTime::setTime ( int $hour , int $minute [, int $second = 0 [, int $microseconds = 0 ]] ) : DateTime

Styl proceduralny

date_time_set ( DateTime $object , int $hour , int $minute [, int $second = 0 [, int $microseconds = 0 ]] ) : DateTime

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

Parametry

object

Tylko styl proceduralny: Obiekt DateTime zwracany przez date_create(). Funkcja modyfikuje ten obiekt.

hour

Hour of the time.

minute

Minute of the time.

second

Second of the time.

microseconds

Microsecond of the time.

Zwracane wartości

Zwraca zmodyfikowany obiekt DateTime lub FALSE w przypadku niepowodzenia.

Rejestr zmian

Wersja Opis
7.1.0 The microseconds parameter was added.
5.3.0Zmieniono zwracaną wartość w przypadku powodzenia z NULL na DateTime.

Przykłady

Przykład #1 DateTime::setTime() example

Styl obiektowy

<?php
$date 
= new DateTime('2001-01-01');

$date->setTime(1455);
echo 
$date->format('Y-m-d H:i:s') . "\n";

$date->setTime(145524);
echo 
$date->format('Y-m-d H:i:s') . "\n";
?>

Styl proceduralny

<?php
$date 
date_create('2001-01-01');

date_time_set($date1455);
echo 
date_format($date'Y-m-d H:i:s') . "\n";

date_time_set($date145524);
echo 
date_format($date'Y-m-d H:i:s') . "\n";
?>

Powyższe przykłady wyświetlą coś podobnego do:

2001-01-01 14:55:00
2001-01-01 14:55:24

Przykład #2 Values exceeding ranges are added to their parent values

<?php
$date 
= new DateTime('2001-01-01');

$date->setTime(145524);
echo 
$date->format('Y-m-d H:i:s') . "\n";

$date->setTime(145565);
echo 
$date->format('Y-m-d H:i:s') . "\n";

$date->setTime(146524);
echo 
$date->format('Y-m-d H:i:s') . "\n";

$date->setTime(255524);
echo 
$date->format('Y-m-d H:i:s') . "\n";
?>

Powyższy przykład wyświetli:

2001-01-01 14:55:24
2001-01-01 14:56:05
2001-01-01 15:05:24
2001-01-02 01:55:24

Zobacz też:

add a note add a note

User Contributed Notes 2 notes

up
10
fabien dot villepinte at gmail dot com
6 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
2 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