PHP 8.4.1 Released!

IntlCalendar::fromDateTime

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a2)

IntlCalendar::fromDateTimeCréer un IntlCalendar depuis un objet DateTime ou une chaîne de caractères

Description

Style orienté objet

public static IntlCalendar::fromDateTime(DateTime|string $datetime, ?string $locale = null): ?IntlCalendar

Style procédural

intlcal_from_date_time(DateTime|string $datetime, ?string $locale = null): ?IntlCalendar

Creer un objet IntlCalendar soit depuis un objet DateTime ou depuis une chaîne de caractères qui peut être utilisée pour construireun objet DateTime.

Le nouveau calendrier représentera non seulement le même instant que le DateTime donné (sous réserve de la perte de précision pour les dates très anciennes ou futures), mais aussi le même fuseau horaire (sous réserve de la mise en garde que différentes bases de données de fuseaux horaires seront utilisées, et donc les résultats peuvent différer).

Liste de paramètres

datetime

Un objet DateTime ou une string qui peut être passé à DateTime::__construct().

Valeurs de retour

L'objet IntlCalendar créé ou null en cas d'échec. Si une string est passée, toute exception qui se produit à l'intérieur du constructeur DateTime est propagée.

Exemples

Exemple #1 IntlCalendar::fromDateTime()

<?php
ini_set
('date.timezone', 'Europe/Lisbon');

//comme IntlCalendar::fromDateTime(new DateTime(...))
$cal1 = IntlCalendar::fromDateTime('2013-02-28 00:01:02 Europe/Berlin');

//A noter que la timezone est Europe/Berlin, pas celle par défaut Europe/Lisbon
echo IntlDateFormatter::formatObject($cal1, 'yyyy MMMM d HH:mm:ss VVVV', 'de_DE'), "\n";

L'exemple ci-dessus va afficher :

2013 Februar 28 00:01:02 Deutschland Zeit

add a note

User Contributed Notes 1 note

up
1
SenseException
10 years ago
Don't forget that fromDateTime() doesn't set any locale and that the default one will be set. In my case it was en_US_POSIX.

If you wan't to create a IntlCalendar object containing the values of a DateTime object with your locale, use createInstance() instead and do a

<?php
$intlCalendar
->setTime($dateTime->getTimestamp() * 1000);
?>

IntlCalendar works with milliseconds so you need to multiply the timestamp with 1000.

Using fromDateTime() can cause unwanted behaviour like getFirstDayOfWeek() returning a wrong integer.
To Top