HOWTO · PHP

如何在 PHP 中將日期轉換為時間戳

本文介紹如何在 PHP 中將日期轉換為時間戳。它包括 strtotime()函式,strptime()函式,getTimestamp()函式和 format()函式。

在本文中,我們將介紹在 PHP 中將 date 轉換為 timestamp 的方法。

  • 使用 strtotime() 函式
  • 使用 strptime() 函式
  • 使用 getTimestamp() 函式
  • 使用 format() 函式

使用 strtotime() 函式將日期轉換為 PHP 中的時間戳

內建函式 strtotime() 將日期轉換為 Unix 時間戳。Unix 時間戳是從 Unix 時代(1970 年 1 月 1 日)計算出的總秒數。使用此函式的正確語法如下

strtotime($dateString,$timeNow);

此函式有兩個引數。$dateString 是應該符合 PHP 有效格式的日期/時間字串。它是必填引數。另一個引數 $timeNow 是可選的,它是用於計算相對日期的時間戳。如果省略第二個引數,則當前時間 now 是預設值。

<?php
$timestamp = strtotime("23-04-2020");
echo "The timestamp is $timestamp.";
?>

這裡的日期格式為 "d-m-Y"。我們僅傳遞了一個引數,因為它將把 date 轉換為 Unix 時間戳。

輸出:

The timestamp is 1587600000.

使用 strptime() 函式將日期轉換為 PHP 中的時間戳

這是將日期轉換為 Unix 時間戳的另一個功能。它不會將日期直接轉換為時間戳。它返回一個陣列,該陣列講述秒,分鐘,小時以及其他一些詳細資訊。我們可以使用這些詳細資訊將日期轉換為時間戳。

strptime($dateString, $format);

它有兩個必填引數。$dateString 是日期字串,$format 是解析 $dateString 的格式。

<?php
$array = strptime('23-04-2020', '%d-%m-%Y');
$timestamp = mktime(0, 0, 0, $array['tm_mon']+1, $array['tm_mday'], $array['tm_year']+1900);
echo "The timestamp is $timestamp.";
?>

輸出:

The timestamp is 1587600000.

生成陣列後,mktime() 函式將 date 轉換為 timestamp。

mktime() 函式的語法是

mktime(hour, minute, second, month, day, year, is_dst)

is_dst 指定日期時間是否為夏令時,但已從 PHP 7.0.0 中刪除。

警告
我們應該在 $array['tm_mon'] 上加 1,然後將和用作 mktime 中的 month 的引數,因為 $array['tm_mon'] 從'0’開始,或者換句話說,一月份的 $array['tm_mon'] 為 0。

使用 getTimestamp() 函式將日期轉換為 PHP 中的時間戳

DateTime 物件的 getTimestamp()方法是一種將日期轉換為時間戳的簡單方法。它有另一種表示方法 date_timestamp_get(),它是程式樣式表示。

$datetimeObject->getTimestamp(); 

我們將建立一個 Datetime 物件來呼叫此函式。這是呼叫函式的物件導向風格。

<?php
$date = new DateTime('2020-04-23');
$timestamp = $date->getTimestamp();
echo "The timestamp is $timestamp.";
?>

Datetime 類的物件 $date 已呼叫方法 getTimestamp()將 date 轉換為 Unix timestamp。

輸出:

The timestamp is 1587600000.

使用 format() 函式將日期轉換為 PHP 中的時間戳

我們還可以使用 DateTime 的 format()方法將 date 轉換為 timestamp。該方法還有另一種表示形式 date_format(),它是 format()函式的過程樣式表示。

$datetimeObject->format("U"); 

為了將 date 轉換為 timestamp,我們將作為字串傳遞的格式為 "U"

<?php
$dateObject = new DateTime('2020-04-23');
$timestamp = $dateObject->format("U");
echo "The timestamp is $timestamp.";
?>

Datetime 類的物件 $dateObject 呼叫了函式 format() 將日期轉換為 Unix 時間戳。

輸出:

The timestamp is 1587600000.