php有操作時間的方法。 php中提供了豐富的日期時間處理方法:1、date(),格式化本地日期和時間;2、mktime(),傳回日期的時間戳記;3、idate(),格式化本地時間為整數;4 、strtotime(),將時間字串轉為時間戳記等等。
本教學操作環境:windows7系統、PHP7.1版、DELL G3電腦
php有操作時間的方法。
在 Web 開發中對日期和時間的使用與處理是必不可少的,例如表單提交的時間、使用者登入的時間、資料庫中資料的更新和刪除的時間等。想要記錄這些操作執行的時刻,就需要透過日期和時間來完成。
PHP 中為我們提供了豐富的日期時間處理函數:
函數
描述
#checkdate()
驗證格利高里日期。
date_add()
新增日、月、年、時、分和秒到一個日期。
date_create_from_format()
會傳回一個根據指定格式進行格式化的新的 DateTime 物件。
date_create()
傳回一個新的 DateTime 物件。
date_date_set()
設定一個新的日期。
date_default_timezone_get()
傳回預設時區,被所有的 Date/Time 函數使用。
date_default_timezone_set()
設定預設時區,被所有的 Date/Time 函數使用。
date_diff()
傳回兩個日期間的差值。
date_format()
傳回根據指定格式進行格式化的日期。
date_get_last_errors()
傳回日期字串中的警告/錯誤。
date_interval_create_from_date_string()
從字串的相關部分建立一個 DateInterval。
date_interval_format()
格式化時間間隔。
date_isodate_set()
設定 ISO 日期。
date_modify()
修改時間戳記。
date_offset_get()
傳回時區偏移量。
date_parse_from_format()
#根據指定的格式傳回一個帶有指定日期的詳細資訊的關聯數組。
date_parse()
傳回一個帶有指定日期的詳細資訊的關聯陣列。
date_sub()
從指定日期減去日、月、年、時、分和秒。
date_sun_info()
傳回一個包含指定日期與地點的日出/日落和黃昏開始/黃昏結束的資訊的陣列。
date_sunrise()
傳回指定日期與地點的日出時間。
date_sunset()
傳回指定日期與地點的日落時間。
date_time_set()
設定時間。
date_timestamp_get()
傳回 Unix 時間戳記。
date_timestamp_set()
設定基於 Unix 時間戳記的日期和時間。
date_timezone_get()
傳回給定 DateTime 物件的時區。
date_timezone_set()
設定 DateTime 物件的時區。
date()
格式化本機日期和時間。
getdate()
傳回某個時間戳記或目前本機的日期/時間的日期/時間資訊。
gettimeofday()
#傳回目前時間。
gmdate()
格式化 GMT/UTC 日期和時間。
gmmktime()
傳回 GMT 日期的 UNIX 時間戳記。
gmstrftime()
根據區域設定格式化 GMT/UTC 日期和時間。
idate()
格式化本機時間/日期為整數。
localtime()
傳回本機時間。
microtime()
傳回目前 Unix 時間戳記的微秒數。
mktime()
傳回日期的 Unix 時間戳記。
strftime()
根據區域設定格式化本機時間/日期。
strptime()
解析由 strftime() 產生的時間/日期。
strtotime()
將任何英文文字的日期或時間描述解析為 Unix 時間戳記。
time()
傳回目前時間的 Unix 時間戳記。
timezone_abbreviations_list()
傳回包含夏令時、偏移量和時區名稱的關聯陣列。
timezone_identifiers_list()
傳回帶有所有時區識別碼的數值陣列。
timezone_location_get()
傳回指定時區的位置資訊。
timezone_name_from_ abbr()
#根據時區縮寫傳回時區名稱。
timezone_name_get()
傳回時區的名稱。
timezone_offset_get()
傳回相對於 GMT 的時區偏移量。
timezone_open()
建立一個新的 DateTimeZone 物件。
timezone_transitions_get()
傳回時區的所有轉換。
timezone_version_get()
傳回時區資料庫的版本。
下面簡單介紹一些時間日期處理方法:
1、PHP取得目前時間(5種方式)
在日期和時間函數中,UNIX 時間戳記的獲取非常重要,時間戳是一個字元序列,是指格林尼治時間1970年01 月01 日00 時00 分00 秒(北京時間1970 年01 月01 日08 時00 分00 秒)起至現在的總毫秒數。下面介紹幾個取得目前時間的函數。
gmmktime() 函數可取得 GMT 日期的 UNIX 時間戳記。語法如下:
int gmmktime ([ int $hour [, int $minute [, int $second [, int $month [, int $day [, int $year [, int $is_dst ]]]]]]] ) 登入後複製
此函數的參數可以從右到左依序空著,空著的參數會被設為對應的目前 GMT 值。
使用範例如下:
<?php
echo gmmktime(); //没有设置参数, 则默认取得当前GMT时间
echo gmmktime(0,45,3,7,7,2016); //设置参数表示GMT时间2016年7月7日0点45分3秒
?> 登入後複製
執行上述程式的列印結果為:
1467909956 1467852303 登入後複製
mktime() 也可取得日期的UNIX 時間戳記。語法如下:
int mktime ([ int $hour = date("H") [, int $minute = date("i") [, int $second = date("s") [, int $month = date("n") [, int $day = date("j") [, int $year = date("Y") [, int $is_dst = -1 ]]]]]]] ) 登入後複製
此函數根據給出的參數傳回 UNIX 時間戳記。時間戳記是一個長整數,包含了從 UNIX 紀元到給定時間的秒數。
和 gmmktime() 函數一樣,該函數的參數也可以從右向左省略,任何省略的參數會被設定成本地日期和時間的目前值。
使用範例如下:
<?php
echo mktime(); // 没有设置参数则默认取得当前GMT时间
echo mktime(0,45,3,7,7,2016); //设置参数表示GMT时间2016年7月7日0点45分3秒
?> 登入後複製
執行上述程式的列印結果為:
1467910465 1467852303 登入後複製
##microtime() 可獲得目前UNIX 時間戳記和微秒數。語法如下:
mixed microtime ([ bool $get_as_float ] ) 登入後複製
如果設定get_as_float 參數值為true,microtime() 將傳回浮點數;若不帶參數,則傳回一個「msec sec」格式的字串,其中sec 是自UNIX 紀元起到現在的秒數,msec 是微秒部分。字串的兩部分都是以秒為單位傳回的。
使用範例如下:
<?php
echo microtime(); //返回 msec sec 格式字符串表示时间
echo "<br/>";
echo microtime(true); //返回一个浮点型字符串表示时间
?> 登入後複製
執行上述程式的列印結果如下:
0.40474900 1467910862
1467910862.4048 登入後複製
time() 函數可傳回目前的UNIX 時間戳記。語法如下:
time() 函數的語法比較簡單,使用範例如下:
<?php
echo time();
?> 登入後複製
執行上述程式的列印結果為:
getdate() 可取得日期時間資訊。語法如下:
array getdate ([ int $timestamp = time() ] ) 登入後複製
該函數傳回一個根據 timestamp 得出的包含有日期資訊的關聯數組 array。如果沒有給出時間戳,則認為是目前本地時間(此時和 time() 函數取值相同)。
其傳回的關聯數組中的鍵名單元如表所示。
getdate() 函數傳回關聯數組鍵名稱#鍵名稱 說明 # 傳回值範例 seconds 秒的數字表示 0 到59 minutes 分鐘的數字表示 0 到59 hours 小時的數字表示##0 到23 mday月份中第幾天的數字表示 1 到31 wday星期中第幾天的數字表示 0(週日)到6(週六) mon月份的數字表示 1 到12 year4 位數表示的完整年份 例如:1999 或2019 #yday一年中第幾天的數字表示 0 到365 weekday星期幾的完整文本表示 Monday 到Sunday month月份的完整文本表示,例如January 或April # January 到December 0自從UNIX 紀元開始至今的秒數,和time() 的回傳值以及用於date() 的值類似 系統相關,典型值為-2147483648 ~ 2147483647 getdate() 函数的使用示例如下:
<?php
echo "<pre class="brush:php;toolbar:false">";
var_dump(getdate());
?> 登入後複製
执行以上程序的打印结果如下:
array(11) {
["seconds"]=>int(57)
["minutes"]=>int(18)
["hours"]=>int(17)
["mday"]=>int(7)
["wday"]=>int(4)
["mon"]=>int(7)
["year"]=>int(2016)
["yday"]=>int(188)
["weekday"]=>string(8) "Thursday"
["month"]=>string(4) "July"
[0]=>int(1467911937)
} 登入後複製
2、strtotime()与mktime():日期转时间戳
使用 strtotime() 函数可以将任何字符串类型的日期/时间转换为 UNIX 时间戳,其语法格式如下:
strtotime($time [,$now = time()]) 登入後複製
其中 $time 为表示时间/日期的字符串,例如“2020-01-01”;$now 为可选参数,用来计算返回值的时间戳。函数执行成功会返回指定的字符串,执行失败返回 FALSE。
另外需要注意的是,如果使用两位数字表示年份的话,其中 0 ~ 69 表示 2000 ~ 2069,70 ~ 100 则表示 1970 ~ 2000。
【示例】使用 strtotime() 函数获取指定时间的时间戳。
<?php
echo '当前的时间戳是:'.time().'<br>';
echo '使用“now”获取当前的时间戳:'.strtotime('now').'<br>';
echo '2000-09-10 的时间戳是:'.strtotime("10 September 2000").'<br>';
echo '在当前的时间戳上加一天:'.strtotime("+1 day").'<br>';
echo '在当前的时间戳上加一周:'.strtotime("+1 week").'<br>';
echo '在当前的时间戳上加一周两天四小时两分钟:'.strtotime("+1 week 2 days 4 hours 2 seconds").'<br>';
echo '下一个周四的时间戳:'.strtotime("next Thursday").'<br>';
echo '上一个周一的时间戳:'.strtotime("last Monday").'<br>';
?> 登入後複製
运行结果如下:
当前的时间戳是:1585273874
使用“now”获取当前的时间戳:1585273874
2000-09-10 的时间戳是:968515200
在当前的时间戳上加一天:1585360274
在当前的时间戳上加一周:1585878674
在当前的时间戳上加一周两天四小时两分钟:1586065876
下一个周四的时间戳:1585756800
上一个周一的时间戳:1584892800 登入後複製
注意:根据具体时间的变化,程序每次运行的结果略有不同。
除了 strtotime() 函数外,我们还可以使用 PHP 中的 mktime() 函数来获取指定日期的 UNIX 时间戳,该函数的语法格式如下:
mktime ([$hour = date("H") [, $minute = date("i") [, $second = date("s") [, $month = date("n") [, $day = date("j") [, $year = date("Y") [, $is_dst = -1 ]]]]]]]) 登入後複製
参数说明如下:
$hour:表示一天中经过的小时数。如果 $hour 为负值,则表示前一天的适当时间;如果 $hour 大于 23,则表示第二天的适当时间。
$minute:表示一个小时内经过的分钟数。如果 $minute 为负值,则表示前一小时适当的分钟数;如果 $minute 大于 59,则表示下一小时中的适当分钟数。
$second:表示一分钟内经过的秒数。如果 $second 为负值,则表示前一分钟内的适当秒数;如果 $second 大于59,则表示下一分钟内的适当秒数。
$month:表示一年中经过的月份数,取值范围在 1 到 12 之间。如果 $month 小于 1(包括负值),则表示上一年的适当月份;如果 $month 大于 12,则表示下一年的适当月份。
$day:表示一个月中经过的天数,取值范围在 1 到 31 之间(取决于具体月份的天数)。如果 $day 小于 1(包括负值),则表示上个月的适当天数,比如 0 表示上个月的最后一天,-1 表示上个月的倒数第二天等等;如果 $day 大于本月的最大天数,则表示下个月的适当日期。
$year:表示具体的年份,可以是两位或四位数字,0 ~ 69 对应 2000 ~ 2069 年,70 ~ 100 对应 1970 ~ 2000年。在如今系统中普遍把 time_t 作为一个 32 位有符号整数的情况下,$year 的合法范围是 1901 到 2038 之间,不过此限制自 PHP5.1.0 起已被克服了。
$is_dst:本参数可以设为 1,表示正处于夏时制时间(DST),0 表示不是夏时制,或者 -1(默认值)表示不知道是否是夏时制。不过本参数在 PHP5.1.0 中已被废弃,并在 PHP7.0.0 中移除。
提示:mktime() 函数中的参数可以从右向左省略,任何省略的参数会被设置成本地日期和时间的当前值。如果省略函数的所有参数,那么 mktime() 函数会和 time() 函数一样,返回当前的时间戳。
【示例】使用 mktime() 函数获取指定时间的时间戳。
<?php
$time1 = time();
echo '当前的时间戳是:'.$time1.'<br>';
$time2 = mktime(0, 0, 0, 3, 26, 20);
echo '2020-03-26 00:00:00 的时间戳是:'.$time2.'<br>';
$time3 = mktime();
echo '省略函数的所有参数,获得的时间戳是:'.$time3.'<br>';
$time4 = mktime(-1, -20, 6, 3, 26, 2020);
echo '2020-03-25 22:40:06 的时间戳是:'.$time4.'<br>';
?> 登入後複製
运行结果如下:
当前的时间戳是:1585216256
2020-03-26 00:00:00 的时间戳是:1585152000
省略函数的所有参数,获得的时间戳是:1585216256
2020-03-25 22:40:06 的时间戳是:1585147206 登入後複製
推荐学习:《PHP视频教程 》
以上是php有操作時間的方法嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
在PHP API中說明JSON Web令牌(JWT)及其用例。
Apr 05, 2025 am 12:04 AM
JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、
php程序在字符串中計數元音
Feb 07, 2025 pm 12:12 PM
字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。
什麼是元音?
元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫:
a, e, i, o, u
示例 1
輸入:字符串 = "Tutorialspoint"
輸出:6
解釋
字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元
您如何在PHP中解析和處理HTML/XML?
Feb 07, 2025 am 11:57 AM
本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲
解釋PHP中的晚期靜態綁定(靜態::)。
Apr 03, 2025 am 12:04 AM
靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。
PHP和Python:比較兩種流行的編程語言
Apr 14, 2025 am 12:13 AM
PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。
See all articles