PHP中的日期和時間格式化
在開發網站時,您經常需要使用日期和時間。例如,您可能需要顯示貼文的最後修改日期或提及讀者發表評論的時間。您可能還需要顯示特殊事件發生之前的倒數計時。
幸運的是,PHP 附帶了一些內建的日期和時間函數,這將幫助我們輕鬆完成所有這些工作。
本教學將教您如何在 PHP 中設定當前日期和時間的格式。您還將學習如何從日期字串獲取時間戳記以及如何添加和減去不同的日期。
取得字串格式的日期和時間
date($format, $timestamp)
是 PHP 中最常用的日期和時間函數之一。它將所需的日期輸出格式作為第一個參數,並將整數作為時間戳值,需要將其轉換為給定的日期格式。第二個參數是可選的,省略它會根據 $format
的值以字串格式輸出當前日期和時間。
$format
參數接受一系列字元作為有效值。其中一些字元具有簡單的含義:Y
為您提供4 位元年份的完整數字表示形式(2018),而y
只為您提供年份的最後兩位數字今年( 18)。同樣,H
將以 24 小時格式顯示小時,並帶有前導零,但 h
將以 12 小時格式顯示小時,並帶有前導零。
以下是一些最常見的日期格式字元及其值。
字元 | 意義 | 範例 |
---|---|---|
D |
一個月中的某天(帶前導零) | 03 或 17 |
j |
不帶前導零的月份中的某天 | 3 或 17 |
D |
以三個字母縮寫表示的星期幾 | 週一 |
l |
一週中的某一天 | 星期一 |
M |
月份為帶前導零的數字 | 09 或 12 |
n |
月份為不含前導零的數字 | 9 或 12 |
M |
月份作為三個字母的縮寫 | 九月 |
F |
整個月 | 九月 |
Y |
兩位數年份 | 18 |
Y |
全年 | 2018 |
還有許多其他特殊字元可以指定 date()
函數的輸出。最好查閱 date()
函數文件中的格式字元表,以了解有關特殊情況的更多資訊。
現在讓我們來看看 date()
函數的一些實際範例。我們可以用它來取得當前年份、當前月份、當前小時等,也可以使用它來取得完整的日期字串。
<?php // Output — 2018 echo date('Y'); // Output — September 2018 echo date('F Y'); // Output — 13 September, 2018 echo date('d F, Y'); // Output — 13 September, 2018 (Thursday) echo date('d F, Y (l)');
您也可以使用 date()
函數來輸出時間。以下是一些最常用的時間格式字元:
字元 | 意義 | 範例 |
---|---|---|
G |
12 小時格式的小時,不含前導零 | 1 或 12 |
H |
12 小時格式的小時,帶前導零 | 01 或 12 |
G |
24 小時格式的小時,不含前導零 | 1 或 13 |
H |
24 小時格式的小時,帶前導零 | #01 或 13 |
A |
am/pm 小寫 | 上午 |
A |
am/pm 大寫 | 上午 |
i |
帶前導零的分鐘 | 09 或 15 |
s |
帶前導零的秒 | 05 或 30 |
这里是一些输出格式化时间字符串的示例。
// Output — 11:03:37 AM echo date('h:i:s A'); // Output — Thursday, 11:04:09 AM echo date('l, h:i:s A'); // Output — 13 September 2018, 11:05:00 AM echo date('d F Y, h:i:s A'); ?>
如果您想在日期字符串中使用这些特殊字符,转义它们也很重要。
<?php // Output — CEST201813am18 1115 Thursday. echo date('Today is l.'); // Output — Today is Thursday. echo date('\T\o\d\a\y \i\s l.'); // Output — Today is Thursday. echo 'Today is '.date('l.'); ?>
获取 Unix 时间戳
有时,您需要在 PHP 中获取当前 Unix 时间戳的值。借助 time()
函数,这非常容易。它返回一个整数值,描述自 1970 年 1 月 1 日午夜 (00:00:00) GMT 以来经过的毫秒数。
您还可以使用此功能来回返回时间。为此,您所要做的就是从 time()
的当前值中减去正确的秒数,然后将结果值更改为所需的日期字符串。以下是两个示例:
<?php $ten_days_later = time() + 10*60*60*24; // Output — It will be Sunday 10 days later. echo 'It will be '.date('l', $ten_days_later).' 10 days later.'; $ten_days_ago = time() - 10*60*60*24; // Output — It was Monday 10 days ago. echo 'It was '.date('l', $ten_days_ago).' 10 days ago.'; ?>
您应该记住的一件重要事情是,time()
返回的时间戳值与时区无关,并且获取自 1970 年 1 月 1 日 00:00:00 UTC 以来的秒数。这意味着在特定时间点,此函数将在美国、欧洲、印度或日本返回相同的值。
获取特定日期的时间戳的另一种方法是使用 mktime($hour, $min, $second, $month, $day, $year)
函数。当省略所有参数时,该函数仅使用当前本地日期和时间来计算时间戳值。此函数还可以与 date()
一起使用来生成有用的日期和时间字符串。
<?php $some_time = mktime(1, 1, 1, 12, 3, 1994); // Output — It was Saturday on 03 December, 1994. echo 'It was '.date('l', $some_time).' on '.date('d F, Y', $some_time).'.'; ?>
基本上,time()
可用于来回返回一段时间,而 mktime()
在您想要前往某个时间点时很有用特定时间点。
将日期时间字符串转换为时间戳
当您想要将字符串格式的不同日期和时间值转换为时间戳时,strtotime($time, [$now = time()])
函数将非常有用。该函数可以将几乎所有类型的日期时间字符串解析为时间戳。
您一定要检查有效的时间格式、日期格式、复合日期时间格式和相对日期时间格式。
使用相对日期时间格式,该函数可以轻松地将常用字符串转换为有效的时间戳值。下面的例子应该可以清楚地说明:
<?php $some_time = strtotime("10 months 15 days 10 hours ago"); // Output — It was Sunday on 29 October, 2017 03:16:46. echo 'It was '.date('l', $some_time).' on '.date('d F, Y h:i:s', $some_time).'.'; $some_time = strtotime("next month"); // Output — It is Saturday on 13 October, 2018 01:18:05. echo 'It is '.date('l', $some_time).' on '.date('d F, Y h:i:s', $some_time).'.'; $some_time = strtotime("third monday"); // Output — Date on the third monday from now will be 01 October, 2018. echo 'Date on the third monday from now will be '.date('d F, Y', $some_time).'.'; $some_time = strtotime("last day of November 2021"); // Output — Last day of November 2021 will be Tuesday. echo 'Last day of November 2021 will be '.date('l', $some_time).'.'; ?>
添加、减去和比较日期
可以在日期中添加或减去特定的时间段。这可以借助 date_add()
和 date_sub()
函数来完成。您还可以使用 date_diff()
函数来减去两个日期并以年、月、日或其他形式输出它们之间的差异。
通常,使用 DateTime
类以面向对象的方式执行任何此类与日期和时间相关的算术比按程序执行更容易。我们将在这里尝试这两种样式,您可以选择您最喜欢的一种。
<?php $present = date_create('now'); $future = date_create('last day of January 2024'); $interval = date_diff($present, $future); // Output — 05 years, 04 months and 17 days echo $interval->format('%Y years, %M months and %d days'); $present = new DateTime('now'); $future = new DateTime('last day of January 2024'); $interval = $present->diff($future); // Output — 05 years, 04 months and 17 days echo $interval->format('%Y years, %M months and %d days'); ?>
使用 DateTime::diff()
时,会从调用 diff()
方法的 DateTime
对象中减去DateTime
对象,该对象传递给 diff()
方法。当您编写过程样式代码时,将从第二个日期参数中减去第一个日期参数。
该函数和方法都返回一个 DateInterval()
对象,表示两个日期之间的差异。可以使用 format()
方法文档中列出的所有字符来格式化此间隔以提供特定输出。
当减去或增加时间间隔时,面向对象风格和过程风格之间的差异变得更加明显。
您可以使用 DateTime()
构造函数实例化新的 DateTime
对象。同样,您可以使用 DateInterval()
构造函数实例化 DateInterval
对象。它接受一个字符串作为其参数。间隔字符串以 P
开头,表示句点。之后,您可以使用整数值和分配给特定句点的字符来指定每个句点。您应该查看 DateInterval
文档以了解更多详细信息。
下面的示例说明了在 PHP 中添加或减去日期和时间是多么容易。
<?php $now = new DateTime('now'); $the_interval = new DateInterval('P20Y5M20D'); $now->add($the_interval); // Output — It will be Saturday, 05 March, 2039 after 20 years, 05 months and 20 days from today. echo 'It will be '.$now->format('l, d F, Y').' after '.$the_interval->format("%Y years, %M months and %d days").' from today.'; $now = date_create('now'); $the_interval = date_interval_create_from_date_string('20 years 05 months 20 days'); date_add($now, $the_interval); // Output — It will be Saturday, 05 March, 2039 after 20 years, 05 months and 20 days from today. echo 'It will be '.$now->format('l, d F, Y').' after '.$the_interval->format("%Y years, %M months and %d days").' from today.'; ?>
您还可以使用比较运算符来比较 PHP 中的日期。这有时会派上用场。让我们使用比较运算符和其他 DateTime
方法创建一个圣诞节计数器。
<?php $now = new DateTime('today'); $christmas = new DateTime('25 December 2018'); while($now > $christmas) { $christmas->add(new DateInterval('P1Y')); } if($now < $christmas) { $interval = $now->diff($christmas); echo $interval->format('%a days').' until Christmas!'; } if($now == $christmas) { echo 'Merry Christmas :)'; } // Output — 103 days until Christmas! ?>
我们首先创建两个 DateTime
对象来存储当前时间和今年圣诞节的日期。之后,我们运行 while
循环,不断向 2018 年圣诞节日期添加 1 年,直到当前日期小于圣诞节日期。当代码在 2024 年 1 月 18 日运行时,这将很有帮助。只要圣诞节日期小于运行此脚本时的当前日期,while 循环就会增加圣诞节日期。
我们的圣诞节计数器现在可以在未来几十年内正常工作,不会出现任何问题。
有关 PHP 中 date()
的常见问题
关于从 PHP 中的 date()
函数获取不同类型的信息,时不时会出现一些常见问题。我们将尽力在这里回答所有问题。
如何获取 PHP 中的当前年份?
您可以使用 date('y')
或 date('Y')
获取 PHP 中的当前年份。使用大写字母 Y 将为您提供当前年份的所有数字,例如 2021。使用小y只会给出最后两位数字,例如21。
<?php echo date('Y'); // 2021 echo date('y'); // 21 ?>
在 PHP 中获取当前月份的正确方法是什么?
在 PHP 中,有四种不同的字符用于获取当前月份,具体取决于您想要的格式。您可以使用大写字母 F 获取月份的完整名称,例如 February,或者使用 M 获取较短的三字母格式的月份。
您还可以使用m和n以数字形式获取当前月份,这将分别为您提供带前导零和不带前导零的月份。
<?php echo date('F'); // February echo date('M'); // Feb echo date('m'); // 02 echo date('n'); // 2 ?>
如何用 PHP 获取星期几?
您还可以通过使用四个不同的字符来获取 PHP 中的星期几。大写字母 D 将用三个字母表示一周中的某一天,例如 Mon 或 Tue。使用 l(小写 L)将为您提供一周中某一天的全名。
您可以使用 w 获取一周中各天的 0(星期日)和 6(星期六)之间的数值>.
<?php echo date('D'); // Fri echo date('l'); // Friday ?>
如何在 PHP 中获取 12 小时格式的当前时间?
您可以使用 g 或 h 获取 12 小时格式的当前时间。使用g,您将获得不带任何前导零的时间,而h将添加一些前导零。可以使用a(小写字母)或A(大写字母)添加 AM 或 PM。
<?php echo date('g:i:s a'); // 5:05:19 am echo date('h:i:s A'); // 05:05:19 AM ?>
我可以在 PHP 中获取 24 小时格式的当前时间吗?
使用字符G和H将为您提供24小时格式的当前小时。 G 不会出现任何前导零,但 H 会添加前导零。
<?php echo date('G:i:s'); // 15:06:48 ?>
转义日期格式字符的最佳方法是什么?
date()
函数接受字符串作为参数,但许多字符都有明确定义的含义,例如 Y 表示年份,F 表示年份月。这意味着直接使用这些字符作为字符串的一部分可能并不总是能获得所需的结果。
如果您希望 date()
函数输出这些字符,那么您必须先对它们进行转义。这是一个例子:
<?php echo 'Today is '.date("l the jS of F Y"); // Today is Friday 2804Europe/Berlin 19th 2021f February 2021 echo 'Today is '.date("l \\t\h\\e jS \of F Y"); // Today is Friday the 19th of February 2021 ?>
某些字符(例如 t)需要两个反斜杠,因为 \t 用于制表符。如果可能,建议将您想要回显的常规字符串放在 date()
之外。否则,您将转义很多字符。
最终想法
在本教程中,我们学习了如何使用 date()
函数以所需格式输出当前日期和时间。我们还看到 date()
也可用于仅获取当前年份、月份等。之后,我们学习了如何获取当前时间戳或将有效的 DateTime
字符串转换为时间戳。最后,我们学习了如何从不同的日期中添加或减去一段时间。
我尝试在此处介绍关键的 DateTime
函数和方法。您绝对应该查看文档以了解本教程中未涵盖的功能。如果您有任何疑问,请随时在评论中告诉我。
以上是PHP中的日期和時間格式化的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

在Python中,我們有一些內建的時間函數,例如strftime()和datetime.now(),可以用來以AM/PM格式找到時間。 AM/PM格式的時間在各種應用程式中使用,如使用者介面、報告和文件、資料視覺化和事件調度。當時間在午夜11:59:00到中午12點之間時,我們會說AM的時間。同樣地,我們可以說12點到午夜11:59:00之間的時間是PM。縮寫AM/PM用於指示確切的時間。 Syntax在範例中使用了以下語法&miinus;strftime('%I:%M:%S%p')strft

PHP日期函數是進行日期計算和處理的強大工具,其中包含了許多有用的函數來處理日期和時間資訊。其中,判斷任意日期是星期幾是常見的需求,在PHP中可以透過date()和strtotime()函數來輕鬆實現。以下將詳細介紹如何使用PHP日期函數來判斷任意日期是星期幾,並提供具體的程式碼範例。首先,透過date()函數可以取得目前時間的星期幾,其格式為0(星期日)

在PHP語言開發中,日期格式化錯誤是常見的問題。正確的日期格式對程式設計師來說十分重要,因為它決定程式碼的可讀性、可維護性和正確性。本文將分享一些處理日期格式化錯誤的技巧。在了解日期格式在處理日期格式化錯誤之前,我們必須先了解日期格式。日期格式是由各種字母和符號組成的字串,用於表示特定的日期和時間格式。在PHP中,常見的日期格式包括:Y:四位數年份(如20

Java是一種流行的程式語言,其中包含了許多強大的日期和時間處理工具。其中最常用的工具是DateFormat函數,該函數可以將日期資料格式化為特定的字串格式。本文將介紹如何使用Java中的DateFormat函數進行日期格式化。導入Date和DateFormat類別在開始使用DateFormat函數前,我們需要導入Java中的Date和DateFormat類

Python正規表示式是一種非常強大的文字處理工具,它可以對字串進行匹配、替換、提取等操作。在實際開發中,我們經常需要對日期進行格式化,例如將「2022/10/01」轉換成「2022年10月01日」的格式。本文將介紹如何使用Python正規表示式進行日期格式化。一、Python正規表示式概述Python正規表示式是一個特殊的字串模式,它描述了一系列符合某

PHP時間處理技巧:快速計算時間差和日期格式化隨著互聯網的快速發展,時間處理成為Web開發中常見的任務之一。在PHP中,時間的處理是比較常見的需求,例如計算時間差、對日期進行格式化等操作。本文將介紹一些PHP時間處理的技巧,包括快速計算時間差和日期格式化,並附帶一些具體的程式碼範例。計算時間差在許多應用場景下,我們需要計算兩個時間點之間的時間差,例如計算兩

解決Java日期格式化異常(DateTimeParseException)的解決方案概述:在Java中,日期格式化是一個常見的任務。透過使用SimpleDateFormat類別或Java8中提供的新的日期時間API(如DateTimeFormatter),我們可以將日期和時間轉換為指定的格式。然而,有時在進行日期格式化時,可能會遇到DateTimePars

PHP日期程式設計指南:探索如何使用PHP確定某個日期的星期幾在PHP程式設計中,經常需要處理日期和時間相關的問題,其中一個常見的需求就是確定某個日期是星期幾。 PHP提供了豐富的日期和時間處理函數,可以輕鬆實現這項功能。本文將詳細介紹如何在PHP中確定某個日期的星期幾,並給出具體的程式碼範例。 1.使用date()函數取得星期幾PHP中的date()函數可以用來格式化
