International PHP Conference Munich 2021

DateTime::setTime

date_time_set

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

DateTime::setTime -- date_time_setAssigne l'heure

Description

Style orienté objet

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

Style procédural

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

Change le temps dans l'objet DateTime.

Liste de paramètres

object

Style procédural uniquement : Un objet DateTime retourné par la fonction date_create(). Cette fonction modifie cet objet.

hour

Heure du moment.

minute

Minute du moment.

second

Seconde du moment.

microsecond

Microsecondes du moment.

Valeurs de retour

Retourne l'objet DateTime pour chainer les méthodes ou false si une erreur survient.

Historique

Version Description
7.1.0 Le paramètre microsecond a été ajouté.

Exemples

Exemple #1 Exemple avec DateTime::setTime()

Style orienté objet

<?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";

?>

Style procédural

<?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";
?>

Les exemples ci-dessus vont afficher quelque chose de similaire à :

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

Exemple #2 Les valeurs qui dépassent leur borne sont ajoutées à leur parent

<?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";
?>

L'exemple ci-dessus va afficher :

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

Voir aussi

add a note add a note

User Contributed Notes 2 notes

up
10
fabien dot villepinte at gmail dot com
4 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
0
php-notes at allenjb dot me dot uk
1 month 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