PHP DateTime boleh menggabungkan tarikh dan masa.
P粉178894235
P粉178894235 2023-07-31 10:43:08
0
1
565
<p>Bagaimana untuk menggabungkan tarikh dan masa bersama-sama menggunakan format lajur 'masa' MySQL dalam PHP? </p> <pre class="brush:php;toolbar:false;">$date = New DateTime(); $masa = $rekod->masa //14:00:00</pra> <p>Lakukan ini</p> <pre class="brush:php;toolbar:false;">$date = New DateTime(); $date->setTime(explode(':',$record->time)[0],explode(':',$record->time)[1],explode(':',$record- >masa)[2]);</pre> <p>Tiada cara yang lebih baik</p>
P粉178894235
P粉178894235

membalas semua(1)
P粉530519234

Saya secara peribadi lebih suka menggunakan objek peringkat tinggi dan bukannya tatasusunan atau rentetan sahaja, jadi beginilah cara saya mendekatinya. Ini mungkin berlebihan bagi sesetengah orang, yang saya faham sepenuhnya, tetapi kaedah teras juga boleh ditulis semula dengan mudah sebagai fungsi global, jadi mudah-mudahan ini boleh diambil kira.

Saya rasa secara keseluruhannya ia sangat mudah dan mudah, hampir sama dengan kod anda, kecuali selepas membelah kami menukarnya kepada integer dan kemudian mengesahkan bahawa jam itu berada dalam julat yang dijangkakan.

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);
    }
}

Penggunaan:

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

Keluaran:

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

Demo: https://3v4l.org/B6mr4#v8.2.7

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan