溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php有沒有操作時間的方法

發(fā)布時間:2022-04-20 16:34:35 來源:億速云 閱讀:130 作者:zzz 欄目:編程語言

這篇“php有沒有操作時間的方法”文章的知識點大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“php有沒有操作時間的方法”文章吧。

php有操作時間的方法。php中提供了豐富的日期時間處理方法:1、date(),格式化本地日期和時間;2、mktime(),返回日期的時間戳;3、idate(),格式化本地時間為整數(shù);4、strtotime(),將時間字符串轉(zhuǎn)為時間戳等等。

php有沒有操作時間的方法

本教程操作環(huán)境:windows7系統(tǒng)、PHP7.1版、DELL G3電腦

php有操作時間的方法。

在 Web 開發(fā)中對日期和時間的使用與處理是必不可少的,例如表單提交的時間、用戶登錄的時間、數(shù)據(jù)庫中數(shù)據(jù)的更新和刪除的時間等。想要記錄這些操作執(zhí)行的時刻,就需要通過日期和時間來完成。

PHP 中為我們提供了豐富的日期時間處理函數(shù):

函數(shù)描述
checkdate()驗證格利高里日期。
date_add()添加日、月、年、時、分和秒到一個日期。
date_create_from_format()返回一個根據(jù)指定格式進行格式化的新的 DateTime 對象。
date_create()返回一個新的 DateTime 對象。
date_date_set()設置一個新的日期。
date_default_timezone_get()返回默認時區(qū),被所有的 Date/Time 函數(shù)使用。
date_default_timezone_set()設置默認時區(qū),被所有的 Date/Time 函數(shù)使用。
date_diff()返回兩個日期間的差值。
date_format()返回根據(jù)指定格式進行格式化的日期。
date_get_last_errors()返回日期字符串中的警告/錯誤。
date_interval_create_from_date_string()從字符串的相關(guān)部分建立一個 DateInterval。
date_interval_format()格式化時間間隔。
date_isodate_set()設置 ISO 日期。
date_modify()修改時間戳。
date_offset_get()返回時區(qū)偏移。
date_parse_from_format()根據(jù)指定的格式返回一個帶有指定日期的詳細信息的關(guān)聯(lián)數(shù)組。
date_parse()返回一個帶有指定日期的詳細信息的關(guān)聯(lián)數(shù)組。
date_sub()從指定日期減去日、月、年、時、分和秒。
date_sun_info()返回一個包含有關(guān)指定日期與地點的日出/日落和黃昏開始/黃昏結(jié)束的信息的數(shù)組。
date_sunrise()返回指定日期與地點的日出時間。
date_sunset()返回指定日期與地點的日落時間。
date_time_set()設置時間。
date_timestamp_get()返回 Unix 時間戳。
date_timestamp_set()設置基于 Unix 時間戳的日期和時間。
date_timezone_get()返回給定 DateTime 對象的時區(qū)。
date_timezone_set()設置 DateTime 對象的時區(qū)。
date()格式化本地日期和時間。
getdate()返回某個時間戳或者當前本地的日期/時間的日期/時間信息。
gettimeofday()返回當前時間。
gmdate()格式化 GMT/UTC 日期和時間。
gmmktime()返回 GMT 日期的 UNIX 時間戳。
gmstrftime()根據(jù)區(qū)域設置格式化 GMT/UTC 日期和時間。
idate()格式化本地時間/日期為整數(shù)。
localtime()返回本地時間。
microtime()返回當前 Unix 時間戳的微秒數(shù)。
mktime()返回一個日期的 Unix 時間戳。
strftime()根據(jù)區(qū)域設置格式化本地時間/日期。
strptime()解析由 strftime() 生成的時間/日期。
strtotime()將任何英文文本的日期或時間描述解析為 Unix 時間戳。
time()返回當前時間的 Unix 時間戳。
timezone_abbreviations_list()返回包含夏令時、偏移量和時區(qū)名稱的關(guān)聯(lián)數(shù)組。
timezone_identifiers_list()返回帶有所有時區(qū)標識符的數(shù)值數(shù)組。
timezone_location_get()返回指定時區(qū)的位置信息。
timezone_name_from_ abbr()根據(jù)時區(qū)縮略語返回時區(qū)名稱。
timezone_name_get()返回時區(qū)的名稱。
timezone_offset_get()返回相對于 GMT 的時區(qū)偏移。
timezone_open()創(chuàng)建一個新的 DateTimeZone 對象。
timezone_transitions_get()返回時區(qū)的所有轉(zhuǎn)換。
timezone_version_get()返回時區(qū)數(shù)據(jù)庫的版本。

下面簡單介紹一些時間日期處理方法:

1、PHP獲取當前時間(5種方式)

在日期和時間函數(shù)中,UNIX 時間戳的獲取非常重要,時間戳是一個字符序列,是指格林尼治時間 1970年 01 月 01 日 00 時 00 分 00 秒(北京時間 1970 年 01 月 01 日 08 時 00 分 00 秒)起至現(xiàn)在的總毫秒數(shù)。下面介紹幾個獲取當前時間的函數(shù)。

  • gmmktime()

gmmktime() 函數(shù)可取得 GMT 日期的 UNIX 時間戳。語法如下:

int gmmktime ([ int $hour [, int $minute [, int $second [, int $month [, int $day [, int $year [, int $is_dst ]]]]]]] )

該函數(shù)的參數(shù)可以從右到左依次空著,空著的參數(shù)會被設為相應的當前 GMT 值。

使用示例如下:

<?php
echo gmmktime();  //沒有設置參數(shù), 則默認取得當前GMT時間
echo gmmktime(0,45,3,7,7,2016);  //設置參數(shù)表示GMT時間2016年7月7日0點45分3秒
?>

執(zhí)行以上程序的打印結(jié)果為:

1467909956   1467852303
  • mktime()

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 ]]]]]]] )

該函數(shù)根據(jù)給出的參數(shù)返回 UNIX 時間戳。時間戳是一個長整數(shù),包含了從 UNIX 紀元到給定時間的秒數(shù)。

和 gmmktime() 函數(shù)一樣,該函數(shù)的參數(shù)也可以從右向左省略,任何省略的參數(shù)會被設置成本地日期和時間的當前值。

使用示例如下:

<?php
echo mktime();  // 沒有設置參數(shù)則默認取得當前GMT時間
echo mktime(0,45,3,7,7,2016);  //設置參數(shù)表示GMT時間2016年7月7日0點45分3秒
?>

執(zhí)行以上程序的打印結(jié)果為:

1467910465 1467852303
  • microtime()

microtime() 可獲得當前 UNIX 時間戳和微秒數(shù)。語法如下:

mixed microtime ([ bool $get_as_float ] )

如果設置 get_as_float 參數(shù)值為 true,microtime() 將返回一個浮點數(shù);若不帶參數(shù),則返回一個“msec sec”格式的字符串,其中 sec 是自 UNIX 紀元起到現(xiàn)在的秒數(shù),msec 是微秒部分。字符串的兩部分都是以秒為單位返回的。

使用示例如下:

<?php
echo microtime();  //返回 msec sec 格式字符串表示時間
echo "<br/>";
echo microtime(true);  //返回一個浮點型字符串表示時間
?>

執(zhí)行以上程序的打印結(jié)果如下:

0.40474900 1467910862
1467910862.4048
  • time()

time() 函數(shù)可返回當前的 UNIX 時間戳。語法如下:

int time ( void )

time() 函數(shù)的語法比較簡單,使用示例如下:

<?php
echo time();
?>

執(zhí)行以上程序的打印結(jié)果為:

1467911104
  • getdate()

getdate() 可取得日期時間信息。語法如下:

array getdate ([ int $timestamp = time() ] )

該函數(shù)返回一個根據(jù) timestamp 得出的包含有日期信息的關(guān)聯(lián)數(shù)組 array。如果沒有給出時間戳,則認為是當前本地時間(此時和 time() 函數(shù)取值相同)。

其返回的關(guān)聯(lián)數(shù)組中的鍵名單元如表所示。

getdate() 函數(shù)返回關(guān)聯(lián)數(shù)組鍵名
鍵名說明返回值例子
seconds秒的數(shù)字表示0 到 59
minutes分鐘的數(shù)字表示0 到 59
hours小時的數(shù)字表示0 到 23
mday月份中第幾天的數(shù)字表示1 到 31
wday星期中第幾天的數(shù)字表示0(周日)到6(周六)
mon月份的數(shù)字表示1 到 12
year4 位數(shù)字表示的完整年份比如:1999 或 2019
yday一年中第幾天的數(shù)字表示0 到 365
weekday星期幾的完整文本表示Monday 到 Sunday
month月份的完整文本表示,,比如 January 或 AprilJanuary 到 December
0自從 UNIX 紀元開始至今的秒數(shù),和 time() 的返回值以及用于 date() 的值類似系統(tǒng)相關(guān),典型值為 -2147483648 ~ 2147483647

getdate() 函數(shù)的使用示例如下:

<?php
echo "<pre>";
var_dump(getdate());
?>

執(zhí)行以上程序的打印結(jié)果如下:

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():日期轉(zhuǎn)時間戳

  • strtotime() 函數(shù)

使用 strtotime() 函數(shù)可以將任何字符串類型的日期/時間轉(zhuǎn)換為 UNIX 時間戳,其語法格式如下:

strtotime($time [,$now = time()])

其中 $time 為表示時間/日期的字符串,例如“2020-01-01”;$now 為可選參數(shù),用來計算返回值的時間戳。函數(shù)執(zhí)行成功會返回指定的字符串,執(zhí)行失敗返回 FALSE。

另外需要注意的是,如果使用兩位數(shù)字表示年份的話,其中 0 ~ 69 表示 2000 ~ 2069,70 ~ 100 則表示 1970 ~ 2000。

【示例】使用 strtotime() 函數(shù)獲取指定時間的時間戳。

<?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>';
?>

運行結(jié)果如下:

當前的時間戳是:1585273874
使用“now”獲取當前的時間戳:1585273874
2000-09-10 的時間戳是:968515200
在當前的時間戳上加一天:1585360274
在當前的時間戳上加一周:1585878674
在當前的時間戳上加一周兩天四小時兩分鐘:1586065876
下一個周四的時間戳:1585756800
上一個周一的時間戳:1584892800

注意:根據(jù)具體時間的變化,程序每次運行的結(jié)果略有不同。

  • mktime() 函數(shù)

除了 strtotime() 函數(shù)外,我們還可以使用 PHP 中的 mktime() 函數(shù)來獲取指定日期的 UNIX 時間戳,該函數(shù)的語法格式如下:

mktime ([$hour = date("H") [, $minute = date("i") [, $second = date("s") [, $month = date("n") [, $day = date("j") [, $year = date("Y") [, $is_dst = -1 ]]]]]]])

參數(shù)說明如下:

  • $hour:表示一天中經(jīng)過的小時數(shù)。如果 $hour 為負值,則表示前一天的適當時間;如果 $hour 大于 23,則表示第二天的適當時間。

  • $minute:表示一個小時內(nèi)經(jīng)過的分鐘數(shù)。如果 $minute 為負值,則表示前一小時適當?shù)姆昼姅?shù);如果 $minute 大于 59,則表示下一小時中的適當分鐘數(shù)。

  • $second:表示一分鐘內(nèi)經(jīng)過的秒數(shù)。如果 $second 為負值,則表示前一分鐘內(nèi)的適當秒數(shù);如果 $second 大于59,則表示下一分鐘內(nèi)的適當秒數(shù)。

  • $month:表示一年中經(jīng)過的月份數(shù),取值范圍在 1 到 12 之間。如果 $month 小于 1(包括負值),則表示上一年的適當月份;如果 $month 大于 12,則表示下一年的適當月份。

  • $day:表示一個月中經(jīng)過的天數(shù),取值范圍在 1 到 31 之間(取決于具體月份的天數(shù))。如果 $day 小于 1(包括負值),則表示上個月的適當天數(shù),比如 0 表示上個月的最后一天,-1 表示上個月的倒數(shù)第二天等等;如果 $day 大于本月的最大天數(shù),則表示下個月的適當日期。

  • $year:表示具體的年份,可以是兩位或四位數(shù)字,0 ~ 69 對應 2000 ~ 2069 年,70 ~ 100 對應 1970 ~ 2000年。在如今系統(tǒng)中普遍把 time_t 作為一個 32 位有符號整數(shù)的情況下,$year 的合法范圍是 1901 到 2038 之間,不過此限制自 PHP5.1.0 起已被克服了。

  • $is_dst:本參數(shù)可以設為 1,表示正處于夏時制時間(DST),0 表示不是夏時制,或者 -1(默認值)表示不知道是否是夏時制。不過本參數(shù)在 PHP5.1.0 中已被廢棄,并在 PHP7.0.0 中移除。

提示:mktime() 函數(shù)中的參數(shù)可以從右向左省略,任何省略的參數(shù)會被設置成本地日期和時間的當前值。如果省略函數(shù)的所有參數(shù),那么 mktime() 函數(shù)會和 time() 函數(shù)一樣,返回當前的時間戳。

【示例】使用 mktime() 函數(shù)獲取指定時間的時間戳。

<?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 '省略函數(shù)的所有參數(shù),獲得的時間戳是:'.$time3.'<br>';
    $time4 = mktime(-1, -20, 6, 3, 26, 2020);
    echo '2020-03-25 22:40:06 的時間戳是:'.$time4.'<br>';
?>

運行結(jié)果如下:

當前的時間戳是:1585216256
2020-03-26 00:00:00 的時間戳是:1585152000
省略函數(shù)的所有參數(shù),獲得的時間戳是:1585216256
2020-03-25 22:40:06 的時間戳是:1585147206

以上就是關(guān)于“php有沒有操作時間的方法”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI