PHP DateTime peut combiner la date et l'heure.
P粉178894235
P粉178894235 2023-07-31 10:43:08
0
1
500
<p>Comment combiner la date et l'heure en utilisant le format de colonne « heure » ​​de MySQL en PHP ? </p> <pre class="brush:php;toolbar:false;">$date = New DateTime(); $time = $record->time //14:00:00</pre> <p>Faites ceci</p> <pre class="brush:php;toolbar:false;">$date = New DateTime(); $date->setTime(explode(':',$record->time)[0],explode(':',$record->time)[1],explode(':',$record- >heure)[2]);</pre> <p>Il n'y a pas de meilleur moyen</p>
P粉178894235
P粉178894235

répondre à tous(1)
P粉530519234

Personnellement, je préfère utiliser des objets de haut niveau plutôt que de simples tableaux ou chaînes, c'est donc ainsi que j'aborde les choses. Cela peut être excessif pour certains, ce que je comprends parfaitement, mais les méthodes de base peuvent également être facilement réécrites en tant que fonctions globales, donc j'espère que cela sera pris en compte.

Je pense que dans l'ensemble, c'est très simple et direct, presque identique à votre code, sauf qu'après le fractionnement, nous le convertissons en entier puis vérifions que l'heure se situe dans la plage attendue.

readonly class MySqlTime
{
    public function __construct(
        public int $hours,
        public int $minutes,
        public int $seconds,
    ) {
    }

    public static function fromMySqlTimeAsDurationInDay(string $time): self
    {
        [$hours, $minutes, $seconds] = array_map('intval', explode(':', $time));

        // Ensure only positive values on a single day.
        // MySql should already be throwing errors about minutes or seconds being out of range, so we don't
        // need to check those.
        // The seconds could include decimals, however for this purpose we are ignoring them.
        if ($hours > 23 || $hours < 0) {
            throw new InvalidArgumentException('Hours must be between 0 and 23');
        }

        return new self($hours, $minutes, $seconds);
    }

    public function toDateTime(DateTimeInterface $dateTime = null) : DateTimeInterface
    {
        $dateTime ??= new DateTimeImmutable();

        return $dateTime->setTime($this->hours, $this->minutes, $this->seconds);
    }
}

Utilisation :

var_dump(MySqlTime::fromMySqlTimeAsDurationInDay('12:34:56')->toDateTime());

Sortie :

object(DateTimeImmutable)#3 (3) {
  ["date"]=>
  string(26) "2023-07-31 12:34:56.000000"
  ["timezone_type"]=>
  int(3)
  ["timezone"]=>
  string(16) "Europe/Amsterdam"
}

Démo : https://3v4l.org/B6mr4#v8.2.7

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!